PHP

[WordPress]メインクエリ停止

//メインクエリ停止
function custom_posts_request( $sql, &$query ) {
    if ( is_admin() || !$query->is_main_query() ){
        return $sql;
    }
    if ( $query->is_main_query() ) {
        /* prevent SELECT FOUND_ROWS() query*/
        $query->query_vars['no_found_rows'] = true;
        /* prevent post term and meta cache update queries */
        $query->query_vars['cache_results'] = false;
        return false;
    }
    return $sql;
}
//posts_request : post 配列を返す SQL クエリを実行する直前に、クエリ全体に対して適用される。
add_filter( 'posts_request', 'custom_posts_request', 10, 2 );

[WordPress]doing_wp_cronが付いてたらリダイレクト

define(‘ALTERNATE_WP_CRON’, true);の時に発生

if(isset($_GET['doing_wp_cron'])){
    header('Location: '.get_current_url(false,array('doing_wp_cron')));
    exit;
}
public function get_current_url($remove_get_query = false,$exclude_keys = array())
{
    $suffix = $_SERVER['REQUEST_URI'];
    if($remove_get_query){
        $tmp = explode('?',$suffix);
        $suffix = array_shift($tmp);
    }else if(!empty($exclude_keys)){
        $tmp = explode('?',$suffix);
        $suffix = array_shift($tmp);
        $get = get_get_queries($exclude_keys);
        if(!empty($get))
            $suffix .= '?' . http_build_query($get);
    }
    return get_base_url($suffix);
}
public function get_get_queries($exclude_keys = array())
{
    $result = array();
    foreach ($_GET as $key => $value){
        if(!empty($exclude_keys) && in_array($key,$exclude_keys)){
            continue;
        }
        $result[$key] = $value;
    }
    return $result;
}
public function get_base_url($suffix = '')
{
    return (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $suffix;
}

[WordPress]get_post_by_post_name

public function get_post_by_post_name($post_name, $post_type = '')
{
    global $wpdb;
    $sql = array();
    $sql[] = "SELECT";
    $sql[] = "p.*";
    $sql[] = "FROM $wpdb->posts AS p";
    $sql[] = "WHERE p.post_status = 'publish' AND p.post_name = '$post_name'";
    if (!empty($post_type))
        $sql[] = "AND p.post_type = '$post_type'";
    $result = $wpdb->get_results(implode(' ', $sql));
    if (empty($result))
        return null;
    return $result[0];
}

[WordPress]get_postsテンプレ

get_postsテンプレ

$conditions = array(
    'post_type' => 'カスタム投稿タイプ',
    'posts_per_page' => -1,//-1:全て取得する
    'post_status' => 'publish',
    'orderby' => 'date',
    'order' => 'DESC',
    'tax_query' => array(
        array(
            'taxonomy' => 'タクソノミー',
            'field' => 'slug',
            'terms' => 'ターム',
        )
    ),
);
$posts = get_posts($conditions);
<?php foreach($posts as $post):?>
<?php endforeach; wp_reset_postdata();?>

[CodeIgniter]カラム名一覧取得

カラム名一覧取得
application/core/MY_Model.phpとかに追記

public function get_column_names($table = '', $format = '%s')
{
    $names = $this->db->list_fields(empty($table) ? $this->name : $table);
    if(!empty($format)){
        foreach($names as &$name){
            $name = sprintf($format,$name);
        }
    }
    return $names;
}

[WordPress]記事を表示する最小処理

記事を表示する最小処理

<?php
//各環境に合わせて修正
require( dirname( __FILE__ ) . '/../../wp-blog-header.php' );
//表示する件数
$per_page = 4;
query_posts(array('posts_per_page'=>$per_page,'post_status'=>'publish'));
?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<div>
	<?php $custom_fields = get_post_custom();?>
	<p><?php the_time('Y/m/d');?></p>
	<a href="<?php the_permalink();?>"><?php the_title();?></a>
	<p><?php the_content();?></p>
</div>
<?php endwhile;endif;?>

[CodeIgniter]テーブルのカラムのコメント取得

テーブルのカラムのコメント取得
/application/core/MY_Model.phpとかに実装

public function get_column_comments($table = '')
{
    if(empty($table)){
        $table = $this->name;
    }
    $query = "SELECT COLUMN_NAME,COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '$table' AND table_schema = '{$this->db->database}'";
    $result = $this->db->query($query);
    $result = $result->result('array');
    $tmp = array();
    foreach($result as $array){
        $tmp[$array['COLUMN_NAME']] = $array['COLUMN_COMMENT'];
    }
    return $tmp;
}