サポート » 使い方全般 » タームの表示優先順位を指定したい

  • 解決済 ijsdotnet

    (@ijsdotnet)


    カスタム投稿タイプ:items
    カスタム分類(カスタムタクソノミー):items-state
    ターム:new「新品商品」,used「中古商品」,arrivai「入荷商品」

    と上記を作成しました。
    新品商品には「new」に中古商品には「used」としてカテゴリーの様に表示を分けてあります。
    更に新しく入荷した表品には「arrival」をさらに加えます。
    任意のページ(今回はindex.phpで作成)ターム「arrival」の表示のみをさせています。
    ここまでは上手く行きましたが、
    その中で新品ん商品をクリックすると、商品詳細ページにリンクしていますが、パンくずリストを見てみると、「ホーム>商品一覧>入荷商品」となっています。
    なぜが中古商品だけは「ホーム>商品一覧>中古商品」となっています。
    希望としては「ホーム>商品一覧>新品商品」となってほしいです。
    回りくどい言い方をしましたが、要はパンくずには「入荷商品」のスラッグは表示しない様にしたいです。プラグイン「Category Order and Taxonomy Terms Order」を入れて優先順位を色々と変えてみましたが、結果は変わりませんでした。
    ちなみにパンくずはプラグイン「Prime Strategy Bread Crumb」を使用しています。

    伝わりづらい文章で恐縮ですが、ご教授いただけると大変嬉しいです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • プラグイン Prime Strategy Bread Crumb のコードを読むと、パンくずに表示するためのタームをカスタム投稿から取得した後、タームが複数ついている場合は「取得できたうちの先頭」を無条件に表示しています。ijsdotnet さんの現在の状況は、おそらく、new と arrival の両方がついていると先頭が arrival で、used と arrival の両方がついていると先頭が used なのでしょう。

    そこで対処方法のアイデアを考えてみました。カスタム投稿からタームを取得した後で、先頭のタームを取り出す前に、arrival を隠してしまえばよいですよね。

    プラグインのファイル prime-strategy-bread-crumb.php をテキストエディターで開いて get_the_terms を検索すると(一カ所だけです)、それに続けて次のようなコードがあります。

    $terms = get_the_terms( $post->ID, $tax_slug );
    if ( $terms ) {
    	// 途中省略
    	break;
    }

    これを下記のように変更すると arrival を隠せます。

    $terms = get_the_terms( $post->ID, $tax_slug );
    // 追加ここから
    if ( $terms ) {
    	$remove_slugs = array( 'arrival' );
    	$remove_keys = array();
    	foreach ( $terms as $k1 => $t1 ) {
    		if ( in_array( $t1->slug, $remove_slugs ) ) {
    			$remove_keys[$k1] = true;
    		}
    	}
    	$terms = array_diff_key( $terms, $remove_keys );
    }
    // 追加ここまで
    if ( $terms ) {
    	// 途中省略
    	break;
    }

    なお、プラグインのファイルを書き換えるので、FTPなどでバックアップとリストアができることをあらかじめ確認してくださいね。

    トピック投稿者 ijsdotnet

    (@ijsdotnet)

    gblsm様

    またまたのご回答ありがとうございます。
    教えていただいた通り、プラグインのファイルを書き換えましたら、希望通りの結果になりました。
    パンくずを自作していれば、こんなことで悩む必要はないのですが、プラグインに頼って作成しておりますのでこのような細かな指定が出来ず悩むことが多々あります。
    プラグインファイルのの書き換えまでは、考えておらず半ば諦めておりましたので、心底嬉しかったです。

    心より感謝致します。
    本当にありがとうございました。

    念のため、プラグインがバージョンアップされると変更分が消えて(元に戻って)しまいます。ご注意ください。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「タームの表示優先順位を指定したい」には新たに返信することはできません。