サポート » 使い方全般 » カスタム分類を複数設定したカスタム投稿記事の一覧表示

  • 解決済 heppoko

    (@heppoko)


    かなり時間を費やして検索したり試したりしたのですが、一向に答えが見つからず、
    いよいよここを頼らざるを得なくなりました。

    下記のような設定があるとします。

    ●カスタム投稿タイプ:ケーキセット(cakeset)

    ●カスタム分類(1):ケーキ(cake)
    ━タルト
    ━ショートケーキ
    ━シフォンケーキ

    ●カスタム分類(2):ドリンク(drink)
    ━コーヒー
    ━紅茶
    ━ジュース

    分類名などは分かりやすくするためのダミーであることを前置きして、
    こういった設定を最終的にすることになりました。
    投稿記事には分類1と2の二つを必ず設定する状態にあります。

    タルトとコーヒー、タルトと紅茶、タルトとジュースといったような組み合わせが生まれます。
    投稿を重ね、ページを更新していくうちに「タルト」と「コーヒー」の二つに分類設定されている記事だけを一覧にする必要性が出てきました。

    「loop-single-cakeset.php」というファイルに、

    <?php $term = array_shift(get_the_terms($post->ID, ‘este_kobetu’)); ?>
    <?php $tax_posts = get_posts(‘post_type=estebetu&taxonomy=este_kobetu&posts_per_page=30&post_parent=0&order=ASC&term=’.esc_html($term->slug)); if($tax_posts): $count = 1; ?>
    <?php foreach($tax_posts as $tax_post): ?>
    <?php if ($post->ID != $tax_post->ID): ?>

    ここに表示させたいデータを挿入

    <?php $count++; ?>
    <?php endif; ?>
    <?php endforeach; ?>
    <?php endif; ?>

    というループがすでにあります。
    この間に、二つに分類設定されている記事だけを一覧表示させたいので
    あれこれ調べて、ひとまずカスタム投稿記事をすべて表示させることから始めてみました。

    <?php query_posts(‘post_type=cakeset&showposts=-1’); ?>
    <?php if (have_posts()):while(have_posts()):the_post(); ?>
    <div class=”innerList clearfix”>
    <img src=”<?php echo catch_that_image(); ?>” alt=”” width=”80″ height=”60″ class=”image” />
    <p>“><?php the_title() ?></p>
    </div>
    <?php endwhile; endif; ?>
    <?php wp_reset_postdata(); wp_reset_query(); ?>

    これでカスタム投稿「cakeset」にある記事一覧は取得出力できました。
    しかしここから先がどうやってもできず困っております。
    作った分類2つを選択できるとおもっていたのですが、どうもそれはできないみたいで。

    <?php query_posts(‘post_type=cakeset&showposts=-1’); ?>

    を、

    <?php query_posts( ‘post_type=cakeset&taxonomy=cake&numberposts=-1&order=ASC&term=dorink’); ?>

    に変えてみたら、二つに属する記事は持ってこれたのですがループにならないため、大きなループ内で同じ一覧しか表示されず…

    思いつく限りのキーワードで検索したのですが答えが見つからず困っております。

    別々で作成したカスタム分類をそれぞれ設定したカスタム投稿記事の一覧を表示させたい。

    文字にすると分かりづらいやもしれませんが、ご教授いただければ幸いです。
    よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • WordPress Codex日本語版の関数 WP_Query のページに下記のような説明がありました。実際に試してはいませんが、2つのタクソノミーを「AND」や「OR」で検索できるようです。「タクソノミーパラメータ」という見出しの少し下にある「Multiple Taxonomy Handling」以降の部分です。

    Display posts from several custom taxonomies:

    $query = new WP_Query( array( 'people' => 'bob', 'language' => 'english' ) );

    Display posts from several custom taxonomies, using ‘tax_query’:

    $args = array(
    	'tax_query' => array(
    		'relation' => 'AND',
    		array(
    			'taxonomy' => 'movie_janner',
    			'field' => 'slug',
    			'terms' => array( 'action', 'commedy' )
    		),
    		array(
    			'taxonomy' => 'actor',
    			'field' => 'id',
    			'terms' => array( 103, 115, 206 ),
    			'operator' => 'NOT IN'
    		)
    	)
    );
    $query = new WP_Query( $args );

    トピック投稿者 heppoko

    (@heppoko)

    お礼が遅くなってしまってすみません。
    早々のご回答に感謝いたします。

    回答いただいて検証するのに時間がかかってしまいました。
    そして明らかに私の質問の仕方が間違っていたことに気づきました。
    重ね重ねすみません。

    「タルト」と「コーヒー」の二つに分類設定されている記事だけを一覧にする

    ではなく、

    「タルト」と「コーヒー」といったような二つに分類設定されている記事だけを一覧にする

    と書くべきでした。

    ですから「タルト」と「コーヒー」もあれば、「タルト」と「紅茶」、「タルト」と「ジュース」
    といった選択肢も出てくるので、それらの記事を臨機応変に表示させたいと思っております。

    投稿後もあれこれ調べたのですが、なかなか思うような記事にはたどり着けず…
    そもそも自分がのぞくようなことは不可能なのかなと思い始めておりますが、
    再度、これをお読みいただいて、
    お分かりになる方がいらっしゃいましたら、ご教授いただければ幸いです。

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

    「タルト」と「コーヒー」ではなく
    「ケーキ(分類)」と「飲み物(分類)」が両方存在する投稿を取得したいのでしょうか?
    (ケーキと飲み物の分類に属するタームが一個以上存在する)
    その場合でも上記のtax_queryで取得できます。
    詳しくはtax_queryの項目を調べてみてください。

    トピック投稿者 heppoko

    (@heppoko)

    gogoweb様
    まさにその通りでございます。
    「tax_query」調べてみます。
    書き方が分かるかどうか不安ですが、ひとまずやってみます。
    ありがとうございます。

    トピック投稿者 heppoko

    (@heppoko)

    ご教授いただきましてありがとうございました。
    何とか解決できました。
    しかし今回の場合、やはりいろいろと特殊だったために、
    「tax_query」は使わずでした。
    でもかなり調べることができたので、今後に活かせればと思っております。
    重ね重ねありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「カスタム分類を複数設定したカスタム投稿記事の一覧表示」には新たに返信することはできません。