• 解決済 ellie3

    (@ellie3)


    どうしても解決が出来ず書き込ませて頂きました。以前の記事で[WP-pagenavi]にて2ページ目がTOPに戻ってしまうという事例についていろいろ参考にさせていただきながら調整して見ているのですが、相変わらずどうしてもTOPに戻ってしまいます。PHPの改変については、知識不足なところがありご教授頂きたくお願い致します。

    まずは環境としてはカスタム投稿タイプ・カスタムフィールドの使って投稿しております。
    archive.phpのループの辺りの記述としてあれこれ記事を見ながら、

    <?php
    global $wp_query;
    $paged = get_query_var( 'paged' );
    $args = array_merge( $wp_query->query, array(
        'post_type' => 'nails',
        'posts_per_page' => 6,
    	'paged' => $paged,
    ) ); ?>
    <?php query_posts( $args ); ?>
    <?php if (have_posts()) : ?>
    	<?php while (have_posts()) : the_post();
    	/* ループ開始 */ ?>
    
        	<?php the_content(); ?>
    <?php endwhile; ?>
    <?php else : ?>
        <div class="post">
    		<h3>記事がありません</h3>
    		<p>表示する記事はありませんでした。</p>
        </div>
    <?php endif; ?>
          <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>

    のような感じで書いております。どの辺りに問題があるのでしょうか?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • ご提示いただいているコードを見る限りでは問題なさそうな気がしますが。

    ・TOPに戻るとは、「サイトのトップページ」でしょうか、それとも「1ページ目」でしょうか
    ・ページナビの2ページ目のリンクはどうなっていますか?
    ・2ページ目をクリックしたとき、ブラウザのアドレス欄はページナビの2ページ目と同じですか?それとも変わっていますか?
    ・テーマをデフォルトにしたときや、いくつかプラグインを無効にしても状況の改善はされませんか?

    トピック投稿者 ellie3

    (@ellie3)

    ありがとうございます。
    まずは、TOPページに戻るはアーカイブページの1ページ目ということではなくて、サイトのindexページに戻るというか飛んでしまうというかという状態です。

    2ページ目のリンクは、http://●●●●●●●●.com/?cat=4&paged=2 (例えばアーカイブページcat4の場合です。その他のcategoryのページもそれぞれ上記のように&paged=2とか3ページ目であれば&paged=3と付きます)

    2ページ目をクリックした時のブラウザのアドレス欄は、上記のまま(http://●●●●●●●●.com/?cat=4&paged=2)が表示されつつ、実際の表示ページは、index(サイトのホームのページ)が表示されております。

    テーマをデフォルトに(Twenty Eleven・Twenty ten)等に戻してページを見るとお探しのarchiveはありませんとなってしまいました。問題の切り分けで考えていくとカスタム投稿・カテゴリー等と使って投稿していることが問題ということになるのでしょうか?
    ちなみにFunction.phpに

    <?php
    add_action('init', 'add_custom');
    function add_custom() {
        register_post_type('nails', array(
            'label' => 'ネイルデザイン',
            'menu_position' => 5,
            'public' => true,
            'taxonomies' => array('category'),
            'supports' => array(
                'title',
                'editor'),
            'has_archive' => true,
            'rewrite' => array(
                'slug' => 'nail',
                'with_front' => false)
        ));
    }
    ?>

    としてカスタム投稿を追加しています。この部分に関しては、Pluginを使ってカスタム投稿を作ると簡単という記事を見かけたりするのですが、すでに相当数の投稿が入ってしまっているため、(始める前に考えておけばよかったのですが)この時点から切替たりした時に諸問題が出ると心配な為そこには手をつけておりません。

    Pluginは関連しそうなところはすべて停止にしてやってみたのですがやはり改善しません。
    なにが考えられるでしょうか?

    まず、archive.phpの query_posts 周りを削除してページ送りがどうなるか確認してください。

    <?php
    global $wp_query;
    $paged = get_query_var( 'paged' );
    $args = array_merge( $wp_query->query, array(
        'post_type' => 'nails',
        'posts_per_page' => 6,
    	'paged' => $paged,
    ) ); ?>
    <?php query_posts( $args ); ?>

    投稿から判別できないのですが、問題が起きるのはカスタム投稿タイプのアーカイブなんですか?
    それともカテゴリーアーカイブなんですか?

    トピック投稿者 ellie3

    (@ellie3)

    ご指導ありがとうございます。ページ送り周りを削除するとループしない為、投稿記事の中にarchive.phpのエラーがたくさん出てしまいダメでした。
    今回は投稿は使わずすべてカスタム投稿を使ったので、一般のカテゴリーアーカイブの検証ができませんでした。その後、自分でも色々なフォーラムの記事を探していたところ、それらしい文献に当たりまして、
    is_main_query と pre_get_posts を使って表示件数を変更するというあたりの記事にて(gatespace様も説明されておりましたね)
    function.phpに

    <?php
    add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' );
    function foo_modify_query_exclude_category( $wp_query ) {
      if ( $wp_query->is_main_query() && $wp_query->is_category() ) {
        $wp_query->set( 'posts_per_page',6 );//1ページに表示する記事数
        $wp_query->set( 'post_type', array( 'nails', 'posts') );
          }
    }
    ?>

    んな感じで追記することで問題を解消することが出来ました。よって自己解決ですが動作に及びました。ご意見誠にありがとうございました。また同じようなことで解決しない方へのヒントになればと思います。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「WP-pagenaviで相変わらず2ページ目がTOPに戻ってしまいます。」には新たに返信することはできません。