よく調べるのでメモ。
WordPressループのリクエスト処理
query_postsは非推奨、代わりにWP_Queryかget_posts()を使用する。
WordPressループの事後処理
query_postsを使ったなら、wp_reset_query()を事後処理として実行することで、変更したループ条件を初期設定に戻すことができる。
WP_Queryを使ったらなら、wp_reset_postdata()を事後処理として実行すること。
1ページあたりの表示件数の指定
showpostsは非推奨、代わりにposts_per_pageを使用する。
1ループしかないならpre_get_postsを使用する。
pre_get_postsの使い方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /*——————————————--------------- pre_get_posts:クエリの変更処理 ----------------———————————————*/ function change_posts_per_page($query) { /* 管理画面、メインクエリに干渉しないために必須 */ if( is_admin() || ! $query->is_main_query() ){ return; } /* トップーページ */ if ( $query->is_home() ) { $query->set( 'posts_per_page', '5' ); $query->set( 'category_name', 'news' ); return; } /* newsカテゴリーページ */ if ( $query->is_category('news') ) { $query->set( 'posts_per_page', '10' ); return; } } add_action( 'pre_get_posts', 'change_posts_per_page' ); |