• 解決済 wanwanco

    (@wanwanco)


    以前、 カスタムカテゴリーページのページ送りで上手くいったのですが、3ページ目移行が表示できなくなりました。
    現在以下の様なコードでページ送りをしています。

    <?php
    		$paged = get_query_var('paged');
    		query_posts('category_name=review&posts_per_page=9&paged='. $paged);
    		?>
    		<?php if (have_posts()) : ?>
    		<?php while (have_posts()) : the_post(); ?>
    
    			<div class="box_s">
    				<figure>
    					<?php  the_post_thumbnail('myOriginalSizeB'); ?>
    					<fcapion>
    
    						ループ記事
    
    					</fcaption>
    				</figure>
    			</div>
    
    		<?php endwhile; ?>
    			 <div class="next_link"><?php next_posts_link(); ?><?php previous_posts_link(); ?></div>
    		<?php else : ?>
    		<?php endif; ?>
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター gatespace

    (@gatespace)

    こんにちは。
    特定のカテゴリーアーカイブページのみ表示件数を変えるのであれば
    テンプレート内でquery_postsを使うよりも
    pre_get_postsというアクションフックを使って
    メインクエリ(この場合はカテゴリー毎に表示件数を変える)を改変した方が良いですよ。

    http://ja.forums.wordpress.org/topic/11137?replies=4

    その上で特定のカテゴリーアーカイブのテンプレートファイルを用意すればよいかと。
    Codex(日本語):テンプレート階層

    トピック投稿者 wanwanco

    (@wanwanco)

    すいません、おっしゃる意味がよく分かりません。
    アクションフックを作るまでは理解できるのですが、実際にカテゴリーページにどのように反映するのかが分かりません。
    また、私の質問は3ページ目以降が「ページが見つかりませんでした」となってしまうのですが、いただいた回答はこれに合致するのでしょうか?

    モデレーター gatespace

    (@gatespace)

    えーっと、以前jim912さんが私が先に投稿したのと同じスレッドを紹介されていて、
    その後、「無事動かすことができました」と返信されてますよね?
    http://ja.forums.wordpress.org/topic/11223?replies=3
    結局参考にされなかったという事ですか?

    「wp-pagenaviを使用し、カテゴリごとに記事数を変更したい」で手順を書きましたが書きましたが、
    まずはテーマのfunctions.phpにこちらのコードを書いてみてください。

    function category_display_five_articles( $wp_query ) {
        if (!is_admin()) { //管理画面以外で
            if ( $wp_query->is_main_query() && $wp_query->is_category('review') ) { // メインのクエリーでカテゴリースラッグが"review"の時
                $wp_query->set( 'posts_per_page', 9 ); // 表示件数は9件
            }
        }
    }
    add_action( 'pre_get_posts', 'category_display_five_articles' );</strong>

    なお、このコード追記後はカテゴリーアーカイブ用のテンプレートで
    query_postsの記述は必要ありません。
    デフォルトテーマ等で確認してみてください。

    トピック投稿者 wanwanco

    (@wanwanco)

    その方法を試してみたのですが、デザイン的にいじる方法が分からず(というかほとんどいじれない?)、結局query_postsを使ったリスト表示を試してみたのですが、表題通りのエラー蜷rってしまいました。

    一応、デフォルトのテンプレートにあるカタログアーカイブのコードが以下になると思うのですが、カスタマイズがきくのでしょうか?

    <?php
    $category_description = category_description();
    if ( ! empty( $category_description ) )
    echo '<div class="archive-meta">' . $category_description . '</div>';
    get_template_part( 'loop', 'category' );
    ?>

    モデレーター gatespace

    (@gatespace)

    こんにちは。

    私の提示した方法は「メインクエリ」の改変、つまり、投稿を取得する部分のコードです。
    まずは、私の提示したコードを試した時、デザインは別として、ページ送りは希望通りの動作をしましたか?

    投稿の取得・ページ送りが希望通りになったら、次に投稿の表示方法を加工すれば良いと思います。

    一番最初のwanwancoさんの投稿されたコードをもとにするなら、
    <?php if (have_posts()) : ?>から<?php endif; ?>の間が、投稿を表示するループです。
    デフォルトテーマ(Twenty Eleven)ならcategory.phpの32行目の
    <?php while ( have_posts() ) : the_post(); ?>から42行目の<?php endwhile; ?>の間です。
    (なお、デフォルトテーマでは get_template_part 関数でさらに別のテンプレートファイルを読み込んでいます)
    この部分で個別の投稿の表示方法を加工すればいいと思います。

    余談ですが、特定のカテゴリーのみデザインをかえるのであれば、

    のいずれかを行うと、管理しやすいですよ。

    トピック投稿者 wanwanco

    (@wanwanco)

    gatespaceさん、ありがとうございました。
    上記の設定通り行い、無事ページ送りができるようになりました。

    ご足労おかけしました。

    今後のために、ここのURLブックマークしておきます。(汗)

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カスタムカテゴリーページのページ送りエラー」には新たに返信することはできません。