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( 'パラメーター名' );
ゼヒトモ内でのプロフィール: ROCKSTREAM, ゼヒトモのホームページ作成・制作サービス, 仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス
2024/08/20
神社
御朱印
2024/07/06
神社
御朱印
2024/07/06
神社
御朱印
2024/02/09
神社
2024/02/09
神社