サポート » テーマ » カスタムタクソノミーのアーカイブページで記事が出てこない

  • 解決済 quiqui

    (@quiqui)


    カスタムタクソノミーのアーカイブページで記事が表示されなくて困っています。どうかおたすけくださいm(_ _)m

    Toolset Typesを使って、通常の投稿(post)にカスタムタクソノミーを追加しました。タクソノミー名はsubcateです。

    Show Current Templateを入れてどのテンプレートが読み込まれているか確認したところ、http://example.com/subcate/term1/にアクセスすると、archive-custom.phpという他のカスタム投稿で使っているテンプレートが読み込まれていました。

    まずこの時点で挙動がおかしいと思うのですが、気を取り直してtaxonomy-subcate.phpというファイルを作ったら、カスタムタクソノミーのアーカイブではtaxonomy-subcate.phpが読み込まれるようになりました。

    ただ、実際には複数の記事が存在しているはずなのに何も出てきません。ループでは特に特別なことはしていないと思うのですが、記事が出てきてくれなくて困っています。

    <?php
    if ( have_posts() ) :
    while(have_posts()): the_post();
    ?>
    <h2>
      <a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a>
    </h2>
    <?php
    endwhile;
    endif;
    ?>

    ネットで調べると、カスタム投稿の設定が問題とか、スラッグが被っているといったことは出てくるのですが、カスタムタクソノミーを追加したのは通常の投稿ですし、スラッグも被っていません。本当ハマりにハマっています。

    なお、苦肉の策で下記のように条件をWP_Queryでループを書いてみたところ、一応記事は出てきますが、今度は2ページが404 Not Foundになってしまいました。八方塞がりです(:o;)

    <?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array(
      'paged' => $paged,
      'post_type' => array('post'),
      'tax_query' => array(
        array(
          'taxonomy' => 'subcate',
          'field' => 'slug',
          'terms' => $term,
        ),
      ),
    );
    $wp_query = new WP_Query($args);
    if ( have_posts() ) :
    ?>
    <h2>
      <a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a>
    </h2>
    <?php
    endwhile;
    endif;
    ?>

    何か考えられる原因や対処法がありましたら、ご教示いただけると幸いです。
    よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • いくつか試してみてはどうでしょう。

    • 管理画面 > 設定 > パーマリンク設定 で、何も変更せず「変更を保存」をクリック
    • 他のテーマ(例: Twenty Seventeen)に変えてみる
    • 他のプラグインを停止してみる

    WP_Query で 2ページ目が 404 になるのは、テンプレートが選択される前に投稿の取得は終わっているためです。

    通常のカテゴリー・タグなどは正常に表示されるのでしょうか?

    トピック投稿者 quiqui

    (@quiqui)

    Toro_Unit (Hiroshi Urabe)様

    ご返信ありがとうございます。
    通常のカテゴリやタグのアーカイブは、正常に記事の表示もページネーションも機能しています。

    読み込まれるテンプレートはarchive.phpで、中身は以下のようにシンプルなものになっています。

    <?php
    if ( have_posts() ) :
    while(have_posts()): the_post();
    ?>
    <h2>
      <a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a>
    </h2>
    <?php
    endwhile;
    endif;
    ?>

    よろしくお願いいたします。

    • この返信は5年、 11ヶ月前にquiquiが編集しました。
    トピック投稿者 quiqui

    (@quiqui)

    gblsm様
    ご返信ありがとうございます。
    下記の件試してみました。

    ・管理画面 > 設定 > パーマリンク設定 で、何も変更せず「変更を保存」をクリック

    →変化ありませんでした。

    ・他のテーマ(例: Twenty Seventeen)に変えてみる

    →テーマをTwenty Seventeenにしたら期待通りの動きになりました。
     カスタムタクソノミーのアーカイブではarchive.phpがちゃんと読み込まれるし、
     記事も表示されページネーションも動きました。
     テンプレートをtaxonomy-subcate.phpを使った場合も同様に
     Twenty Seventeenの場合は正常に動きます。

    ・他のプラグインを停止してみる

    →Toolset Types以外を無効化してみましたが、
     特に変化はありませんでした。

    以上のことから、明らかにテーマがおかしいということはわかったのですが、未だに原因がつかめずにいます…

    テーマ側で、テンプレートの読み込みが変わるのであれば、functions.php 周りが原因として考えられますね。

    症状的には、テンプレートの読み込みの改変というよりは、pre_get_posts などで、クエリーそのものを改変しているようなことをやっているような気がします。タクソノミーに対して、post_typeを強制的に指定するような感じの。

    プラグインなどでやったほうが良いことだとは思いますが・・・・

    トピック投稿者 quiqui

    (@quiqui)

    Toro_Unit (Hiroshi Urabe)様
    ご回答ありがとうございます。

    functions.phpを確認してみたところ、
    おっしゃる通り、pre_get_postsの記述がありましたので、
    そちらを削除したところ、期待通りの動きになりました。

    カスタムタクソノミーのアーカイブにアクセスすると、
    archive.phpが読み込まれるようになり、ページネーションも機能しています。

    本当にありがとうございました!
    自分一人だと絶対に気付くことができなかったと思います。
    大変助かりました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カスタムタクソノミーのアーカイブページで記事が出てこない」には新たに返信することはできません。