カスタム投稿タイプのアーカイブページでページングに不具合が出る場合
カスタム投稿タイプのアーカイブページでの記事数を、管理画面で設定している投稿数から query_posts を使用して操作した場合にページングが正常にできなくなって困りました。そんな時の対処法です。
2013/04/06記事内容変更
最初に書いていた方法だと、その他の get_posts や guery_posts へ影響がでてしまう可能性がある為記事内容変更しました。
そもそも、このエラーが出ていたのは query_posts でメインクエリで表示件数を操作していた為でした…。メインクエリを query_posts で操作するのは現在よくない方法のようです。
is_main_query と pre_get_posts を使った書き方に書き直しました。
参考:
3.3の新しい関数 is_main_query を使おう | Simple Colors
WordPressでホームやアーカイブ毎に表示条件を変える(is_main_query と pre_get_posts フック) | Gatespace's Blog
3.3の新しい関数 is_main_query を使おう | Simple Colors
WordPressでホームやアーカイブ毎に表示条件を変える(is_main_query と pre_get_posts フック) | Gatespace's Blog
is_main_query と pre_get_posts を使って表示件数を変更する
is_main_query()でメインクエリを表示させる場合という条件付きにし、アクションフック pre_get_posts を使って表示件数を変更します。
// 「custom」という投稿タイプのアーカイブページで表示件数を変える function custom_posts( $wp_query ) { if ( ! is_admin() && $wp_query->is_main_query() && is_post_type_archive('custom')) { // 管理画面以外のメインクエリと、カスタムポスト名が 'custom' だった場合に $wp_query->set( 'posts_per_page', 5 ); // 表示件数を5件にする } } add_action( 'pre_get_posts', 'custom_posts' );
カスタム投稿タイプのアーカイブページとタクソノミーアーカイブページのみ表示件数を5件に変更するには以下のように functions.php へ記入します。(投稿タイプ名:custom タクソノミー名:custom_cat だった場合)
function custom_posts( $wp_query ) { if ( ! is_admin() && $wp_query->is_main_query() && is_post_type_archive('custom') || is_tax('custom_cat')) { $wp_query->set( 'posts_per_page', 5 ); } } add_action( 'pre_get_posts', 'custom_posts' );
関数リファレンス/is main query – WordPress Codex 日本語版
プラグイン API/アクションフック一覧/pre get posts – WordPress Codex 日本語版
プラグイン API/アクションフック一覧/pre get posts – WordPress Codex 日本語版
No Comments & Tracbacks