サポート » 使い方全般 » カスタム分類で絞込み

  • 解決済 tonoro

    (@tonoro)


    CMS的なサイトを制作中です。
    商品(items)というカスタム投稿タイプに、「区分(classifications)」と
    「特売日(sale_date)」という2つのカスタム分類を割り当てています。

    • パーマリンクは /%category%/%page_id%.html と指定。
    • カスタム投稿タイプ、カスタム分類ともにCustom Post Types UIで設定。
    • 「classifications」は2階層。

    □現状は以下の通りです。
    A)sale_dateのterm 20100823をもつ商品の一覧を表示する際に、
    http://localhost/sale_date/20100823/
    というURLで一覧が表示されます。
    (テンプレートはtaxonomy-sale_date.phpを作成、使用)

    B)classificationsのterm ABCをもつ商品の一覧を表示する際に、
    http://localhost/classifications/ABC/
    というURLで一覧が表示されます。
    (テンプレートはtaxonomy-classifications.phpを作成、使用)

    ■やりたいこと
    A)の状態で、更にclassificationsのtermで絞り込みたい。もしくはB)の状態でsale_dateのtermで絞り込み、でも可。

    ■やってみてダメだったこと
    ・A)でquery_postの引数にtaxonomy=classifications&term=ABCを追加
    < 「sales_date」が反映されず。
    ・B)でquery_postの引数にtaxonomy=sale_date&term=20100823を追加
    < 「classifications」が反映されず。

    ・A)でquery_postの引数にclassifications=ABCを追加
    < 「classifications」が反映されず。
    ・B)でquery_postの引数にsale_date=20100823を追加
    < 「sales_date」が反映されず。

    2つのカスタム分類のtermを条件に一覧表示する方法について、何かヒントをいただければ大変助かります。
    よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 僕もチャレンジしたことがあるのですが、タクソノミーの複数指定できないんですかね。

    ぜーーーーったいっ、もっと簡単にできる方法があると思いますが、一応アイデアとして。
    ※コードの安全性や正確性は保障できかねますので、ご自身で検証をお願いします。

    A)の状態で更にclassificationsのtermで絞り込みたい
    taxonomy-sale_date.php を編集

    <?php
    if (have_posts()) : while (have_posts()) : the_post();
    
    // 各記事が、タクソノミー「classifications」のタームを持っているか
    $class = get_the_terms($post->ID, 'classifications');
    
    // 持っていればそのタームスラッグを取得
    	if (!empty($class)) {
    		foreach ($class as $term) {
    		$slugs = $term->slug;
    		}
    
    // スラッグの中に目的のタームスラッグ(abc)があるか検索
    // タームを一つしか持たせてないのでしたら、下の2行を if ($slugs === 'abc') { に
    		$pattern ='/^abc/';
    		if (preg_match($pattern, $slugs)) {
    ?>
    
    ループ内 : abc を持っている記事のみ出力されます。(はず)
    
    <?php
    		}
    	}
    endwhile; endif;
    ?>

    LVP8様
    ご返信ありがとうございます。

    早速試して見ました。
    見事、思ったとおりの動作になりました!ありがとうございます!!

    ※当初、クエリーで抽出される件数と、表示したい件数に差異が発生するため、
    ページングがおかしくなりましたが、表示用のループとは別に、
    ‘posts_per_page=-1’+いただいた条件分岐
    でループを回して、表示したい件数をカウントし、paginate_links()の引数
    totalに代入することで解決しました。

    タクソノミー/タームの複数指定、今後のバージョンアップでもっと扱いやす
    くなると良いですね。
    最初の投稿にも書いてますが、query_postsでtaxonomy=termなんてできると、
    ステキです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタム分類で絞込み」には新たに返信することはできません。