サポート » 使い方全般 » 複数投稿タイプ、の、一覧表示について

  • 解決済 aquas

    (@aquas)


    お世話になっております。

    一つご教授いただきたいことがございます。

    現状
    ・カスタムタクソノミーを利用
    ・複数投稿タイプを設定(postA postB postC )
    ・カスタムタクソノミー、タームを設定済み

    postA-(taxA1,taxA2)
    postB-(taxB1,taxB2)
    postC-(taxC1,taxC2)

    目標
    ・taxonomy.phpにて、taxA1,taxB1,taxC1 のみのターム一覧を表示させたい
    (taxA2,taxB2,taxC2は、不要)

    どうしても、ここが、うまく参りません。

    <?php
        $args=array(
           'tax_query' => array(
                array(
                    'taxonomy' => 'taxA1',
                    'field' => 'slug',
                    'terms' =>  'hoge'
               ),
            ),
            'post_type' => 'postA',
        ); ?>
        <?php query_posts( $args ); ?>
        <?php if(have_posts()): ?>
        <?php while(have_posts()):the_post(); ?>
    ~~~以下略~~~

    上記のような感じで、ここから先に進めなくなっております。
    何卒、よろしくお願い致します。

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

    (@jim912)

    taxonomy.phpにて、taxA1,taxB1,taxC1 のみのターム一覧を表示させたい

    が、よくわかりません。タームというのは、taxA1,taxA2,taxB2などを指しますので、ターム一覧というと、一般的には

    • taxA1
    • taxA2

    のようなリストになりますが、提示いただいているコードですとそうでもないようです。

    トピック投稿者 aquas

    (@aquas)

    ご返答ありがとうございます。
    勉強中の身で、言葉足らずで申し訳ないです…

    上記のコードで、
    PostA の taxA1 の hoge 一覧を表示することはできておるのですが…

    PostB の taxB1
    PostC の taxC1
    も、混在した一覧を表示したいと思っております。

    お力添えいただけると幸いです。

    トピック投稿者 aquas

    (@aquas)

    申し訳ございません。。

    ターム一覧、じゃないですね。
    投稿一覧を表示させたいのです。

    このような説明でお分かりいただけますでしょうか。
    質問も支離滅裂でもうしわけございません。

    モデレーター gatespace

    (@gatespace)

    taxonomy.php の

    <?php
        $args=array(
           'tax_query' => array(
                array(
                    'taxonomy' => 'taxA1',
                    'field' => 'slug',
                    'terms' =>  'hoge'
               ),
            ),
            'post_type' => 'postA',
        ); ?>
        <?php query_posts( $args ); ?>

    を削除し、taxA1、taxB1、taxC1のアーカイブを表示させた時、
    (ダッシュボードの各タクソノミーのページから各タームの「表示」クリックで表示可能)
    期待した投稿一覧になっているかどうか確認してください。

    各タームは自動でアーカイブも作成されます。
    ですので、一覧表示(アーカイブ)がいらないタームの場合は、別途コードを書かないといけません。
    まずはアーカイブを表示させたいタームで意図した通りになるかどうかを確認してから、アーカイブのいらないタームの処理をした方が良いと思いますよー

    トピック投稿者 aquas

    (@aquas)

    gatespace様

    ご返答ありがとうございます。
    おっしゃってくださいました通り、
    該当部分を削除いたしましたところ…

    ループ部分が表示されません(真っ白になります)。

    皆様にこうして、ご教授いただけること、本当に感謝いたします。

    モデレーター gatespace

    (@gatespace)

    ループ部分が表示されません(真っ白になります)。

    他の部分(ヘッダーとかサイドバーとか)は正常に表示されていると言うことですか?

    トピック投稿者 aquas

    (@aquas)

    そうです。
    ヘッダー・サイドバーなどは、正常に表示されております。

    モデレーター gatespace

    (@gatespace)

    未検証ですが、taxonomy.phpは今のままで、
    テーマのfunctions.phpに下記のコードを追加して、各タームのアーカイブを確認してみてください。

    add_action( 'pre_get_posts', 'foo_modify_main_query' ); // pre_get_postsにフック
    function foo_modify_main_query( $query ) {
      if ( is_admin() || ! $query->is_main_query() ) // 管理画面のときとメインクエリーじゃない場合は終了
        return;
    
      if ( $query->is_tax() ) { // タクソノミーアーカイブの時
        $query->set( 'post_type', 'any' ); // リビジョン以外の投稿タイプ全てを対象
        return;
      }
    }

    このコードを追加すると全てのカスタムタクソノミー(分類)の各タームのアーカイブにおいて、リビジョン以外の投稿タイプ全てが対象になるはずです。
    ちょっとおおざっぱな指定をしてあります。

    トピック投稿者 aquas

    (@aquas)

    ありがとうございます。

    functions.php
    に、追加をしてみましたが、
    先ほどのままでございます…

    モデレーター gatespace

    (@gatespace)

    こちらでは確認できてます。
    念のため、キャッシュ系のプラグインをはじめとして全てのプラグインをオフにして
    (カスタム投稿タイプとカスタム分類をプラグインで作っているならそれのみ有効化して)
    かつ、デフォルトテーマの functions.php にコードを追加して確認してみてください。

    トピック投稿者 aquas

    (@aquas)

    当方の勉強不足のため、誠に申し訳ございません。

    今一度、表現したいことをまとめておきます。

    現状
    ・カスタムタクソノミーを利用
    ・複数投稿タイプを設定(postA postB postC )
    ・カスタムタクソノミー、タームを設定済み

    postA-taxA1-termA11/termA12
    taxA2-termA21/termA22
    postB-taxB1-termB11/termB12
    taxB2-termB21/termB22
    postC-taxC1-termC11/termC12
    taxC2-termC21/termC22

    目標
    ・taxonomy.phpにて、
    termA11/termA12
    termB11/termB12
    termC11/termC12
    に属する記事一覧を表示させたい。
    ・各タームの記事を順番をランダムにしたい。

    'post_type' => array('postA','postB','postC'),

    としてしまうと、
    表示したくない
    termA2、B2,C2
    等なども、一覧として、一緒に表示されてしまう。
    という感じです。

    トピック投稿者 aquas

    (@aquas)

    gatespace様
    ありがとうございます。
    gatespace様の環境では、確認されるのですね!

    当方が、不勉強の上に、むりくりテーマを作っております故、
    何かが抜けておるのかもしれません…

    おっしゃったとおりに、プラグインをオフにしてみましたが、
    やはり、先ほどと変わりません…

    モデレーター gatespace

    (@gatespace)

    add_action( 'pre_get_posts', 'foo_modify_main_query' ); // pre_get_postsにフック
    function foo_modify_main_query( $query ) {
      if ( is_admin() || ! $query->is_main_query() ) // 管理画面のときとメインクエリーじゃない場合は終了
        return;
    
      if ( $query->is_tax() ) { // タクソノミーアーカイブの時
        $query->set( 'post_type', array('postA','postB','postC') );
        return;
      }
    }

    これでどうです?

    表示したくない
    termA2、B2,C2
    等なども、一覧として、

    これはtermA2、B2,C2の各アーカイブが存在する、と言う認識でよいですか?
    先にも書いたとおり、各タームのアーカイブは自動で作成されるのでこれは通常の動作です。
    特定のタームのアーカイブを表示させない、というのは別のコードが必要になりますが、まずは表示させたいタームのアーカイブが期待通りになってからで良いと思います。

    モデレーター Takuro Hishikawa

    (@hissy)

    ・taxonomy.phpにて、
    termA11/termA12
    termB11/termB12
    termC11/termC12
    に属する記事一覧を表示させたい。

    http://example.com/?tax-a=term-a11,term-a12
    http://example.com/?tax-b=term-b11,term-b12
    http://example.com/?tax-c=term-c11,term-c12

    何もしなくてもこんなURLで可能かと思います。

    ・各タームの記事を順番をランダムにしたい。

    どうされたいのか、よく分かりません…

    トピック投稿者 aquas

    (@aquas)

    hissy様
    ありがとうございます。

    term-a11
    term-b11
    term-c11

    の各記事を、ループの中で一覧表示をさせたいのです。

    term-a11 3件
    term-b11 5件
    term-c11 7件

    記事があるとしたら、15件を一覧表示させたい、ということです。
    それを、順番ではなく、ランダム表示させたい、ということなのですが…
    お分かりいただけますでしょうか。

15件の返信を表示中 - 1 - 15件目 (全24件中)
  • トピック「複数投稿タイプ、の、一覧表示について」には新たに返信することはできません。