Blog

【WordPress】非推奨のquery_postを使わないためのメモ

2016/06/13

Wordpress

query_postが非推奨ということで、pre_get_postsを使う方法が記載されているサイトがありましたが、
残念ながら参考サイト見づらかったため、コピーして記載させていただきました。
(ごめんなさい、最近老眼でテキストが見づらい時があります・・・)

参考サイト
query_postsを捨てよ、pre_get_postsを使おう

function.phpの冒頭に記述

function change_posts_per_page($query) {
//管理画面で実行しないための記述
if ( is_admin() || ! $query->is_main_query() )  		
return;
//archiveで5件表示
if ( $query->is_archive() ) {  		
$query->set( 'posts_per_page', '5' );  	
}  
}  
add_action( 'pre_get_posts', 'change_posts_per_page' );

管理画面、またはメインクエリーでない場合は、is_admin()で処理を中止して、それ以降のコードは実行されないようにします。
これを書かないと、管理画面の一覧も、サイドバーのウィジェットも、全部5件ずつの表示になってしまいます。

条件分岐いろいろです

アーカイブの場合

$query->is_archive()

カスタム投稿アーカイブの場合

$query->is_post_type_archive( $post_types )

著者の場合

$query->is_author( $author )

カテゴリの場合

$query->is_category( $category )

タグの場合

$query->is_tag( $slug )

タクソノミーアーカイブの場合

$query->is_tax( $taxonomy, $term )

日付アーカイブ

$query->is_date()

フィード

$query->is_feed($feeds)

フロントページ

$query->is_front_page()

固定ページ

$query->is_page( $page )

検索結果

$query->is_search()

投稿(single.php)

$query->is_single( $post )

カスタム投稿タイプのシングル

$query->is_singular( $post_types )

404ページ

$query->is_404()

クエリを設定

条件が指定できたら、いよいよメインクエリーを変更しましょう。
変更といっても、query_postsのように必要なパラメーターをすべて揃える必要はありません。
追加したいパラメーターをセットするだけです。
基本的な書き方は以下の通りです。

$query->set( 'パラメーター名', 'パラメーターの値' );

下のサンプルコードでは、1ページに表示する件数を5件に設定しています。

function change_posts_per_page($query) {
//管理画面で実行しないための記述
if ( is_admin() || ! $query->is_main_query() )  		
return;
//archiveで5件表示
if ( $query->is_post_type_archive('news') ) {  		
$query->set( 'posts_per_page', '5' );  	
}  
}  
add_action( 'pre_get_posts', 'change_posts_per_page' );

どんなパラメーターが使えるかは、Codexの関数リファレンス/WP_Queryのページを参考にしてください。

クエリパラメータの値を取得

下記の書き方で、すでに設定されているクエリーパラメーターの値を取得することもできます。

$query->get( 'パラメーター名' );

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ