カスタム投稿タイプのアーカイブページでページングに不具合が出る場合

カスタム投稿タイプのアーカイブページでページングに不具合が出る場合

カスタム投稿タイプのアーカイブページでの記事数を、管理画面で設定している投稿数から query_posts を使用して操作した場合にページングが正常にできなくなって困りました。そんな時の対処法です。

2013/04/06記事内容変更

最初に書いていた方法だと、その他の get_posts や guery_posts へ影響がでてしまう可能性がある為記事内容変更しました。

そもそも、このエラーが出ていたのは query_posts でメインクエリで表示件数を操作していた為でした…。メインクエリを query_posts で操作するのは現在よくない方法のようです。

is_main_query と pre_get_posts を使った書き方に書き直しました。

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' );

Related Article

No Comments & Tracbacks

Leave a Comment

Emailは公開されません。*は必須項目です。


*


Categorys

Tags

CSS3 ダッシュボード ヘッダー トラブル コードサンプル スライドショー コンテンツ 素材 jQueryプラグイン Facebook php 引っ越し お知らせ JavaScript CSS カテゴリー Shareボタン IE 投稿タイプ seo Photoshop HTML5 レスポンシブ サイドバー ナビゲーション タクソノミー WPセキュリティ Git カスタムメニュー Macアプリ PHPリファレンス SVG query_posts API WP使い方 iTunes データベース コメント function RSS 条件分岐 get_posts() スマートフォン Sass/Compass マルチサイト機能