サポート » プラグイン » wp-pagenaviを使用し、カテゴリごとに記事数を変更したい

  • 解決済 モグラ

    (@tenpra)


    wp-pagenaviを使用し、カテゴリごとに記事数を変更したいのですが、

    <?php $paged = get_query_var('paged'); ?>
    <?php query_posts("cat=6&posts_per_page=3&paged=$paged"); ?>
    <?php while (have_posts()) : the_post(); ?>
    <div class="article">
    <h2><?php the_title(); ?></h2>
    <p><a>"><?php echo mb_substr(strip_tags($post-> post_content), 0, 999); ?></a><p>
    </div>
    <?php endwhile;?>
    <?php query_posts($query_string); ?>
    
    <?php if(function_exists('wp_pagenavi')) {
    wp_pagenavi();
    } else {
    vicuna_paging_link('next_label=Newer Entries&prev_label=Older Entries&indent=2');
    } ?>

    現在このように入れて動いてはいるのですが、
    他のカテゴリで30件表示したい場合、
    設定 > 表示設定 で最大投稿数を30にすると、
    上記の部分が動かなくなります。

    カテゴリごとに記事数を変更することは可能なのでしょうか。
    ご教授頂けると非常に助かります。

    よろしくお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター gatespace

    (@gatespace)

    こんにちは。
    上記のコードが記載されているのはカテゴリーアーカイブ用のテンプレートですか?

    アプローチの仕方は異なりますが、
    pre_get_postsというアクションフックを用いることで、
    メインクエリ(この場合はカテゴリー毎に表示件数を変える)の改変が可能です。

    これはテンプレートファイルにアクセスする前にクエリを改変しますので、
    二重にクエリの呼び出しを行わなくて済むというメリットがあります。

    Codex:is_main_query

    こちらのブログでは「カテゴリーアーカイブだったら表示する件数を5件にする」と言うコードが紹介されています。
    3.3の新しい関数 is_main_query を使おう
    ※3.3となっていますが、3.2以前でも対応可能なコードが紹介されています。

    手順としてはいったんデフォルトテーマなどに戻し、
    テーマのfunctions.phpにこちらのコードを書いてみてください。

    function category_posts_per_page( $wp_query ) {
        if ( $wp_query->is_category('1') ) { // カテゴリーIDが1の時
            $wp_query->set( 'posts_per_page', 5 ); // 表示件数は5件
        }
    }
    add_action( 'pre_get_posts', 'category_posts_per_page' );

    トピック投稿者 モグラ

    (@tenpra)

    gatespaceさん

    コメント有難う御座います!
    上記を入れたら問題なく動きました!

    おかげさまで非常に助かりました。
    今後ともよろしくお願いします。

    モデレーター gatespace

    (@gatespace)

    解決済みのところスイマセン。
    コードが若干間違っていたので、訂正しておきます。

    function category_display_five_articles( $wp_query ) {
        if (!is_admin()) { //管理画面以外で
            if ( $wp_query->is_main_query() && $wp_query->is_category('1') ) { // メインのクエリーでカテゴリーIDが1の時
                $wp_query->set( 'posts_per_page', 5 ); // 表示件数は5件
            }
        }
    }
    add_action( 'pre_get_posts', 'category_display_five_articles' );
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「wp-pagenaviを使用し、カテゴリごとに記事数を変更したい」には新たに返信することはできません。