wp プラグインの作成15 pre_get_postsを使う1 2件表示にしてみる
2013/06/14
特定のカテゴリを非表示にしたい。とりあえず「pre_get_posts」を使えば良いらしいから「pre_get_posts」を調べる。
いきなり「特定のカテゴリを非表示」ってできれば良いんだけど…できないから順番にやっていく。
まずはメインになる「pre_get_posts」ってヤツで簡単なものからやっていくことにする。
function filterTest( $wpQuery = '' ) {
// 管理画面・メインクエリーでない場合は終了
if ( is_admin() || ! $wpQuery->is_main_query() ){
return;
}
$wpQuery->set( 'posts_per_page', '2' );
}
add_action('pre_get_posts', 'filterTest');
// 管理画面・メインクエリーでない場合は終了
if ( is_admin() || ! $wpQuery->is_main_query() ){
return;
}
$wpQuery->set( 'posts_per_page', '2' );
}
add_action('pre_get_posts', 'filterTest');
雑記
上記をテンプレートの「function.php」に記載する。
あとはブラウザでブログを表示すると「2件表示」になっているはず。
テンプレート側で「have_posts()」とか、されたときに呼ばれているっぽい。
あとは「add_filter()」じゃなくて「add_action()」を使っている。
「is_admin()」で管理画面かどうかチェックしてるっぽい。
ココのif文をなくすと管理画面でも同じようになってしまうらしい。
「$wpQuery->set( 'posts_per_page', '2' )」で「2件表示」になるらしい。第一引数が対象で、第二引数が値っぽい。
今回の場合だと「対象:表示件数(posts_per_page)、値:2」となる。