サポート » 使い方全般 » 複数カテゴリを選択した投稿でのパンくずの表示カテゴリを指定したい

  • 解決済 kitchen812

    (@kitchen812)


    クライアント(不動産関係)の要望により複数のカテゴリでの運用としたWordpressを構築しました。

    カテゴリ例)
    エリア(市区町村)/金額/特徴 など

    現在、Breadcrumb NavXTを用いてパンくず表示をしているのですが、カテゴリ名順に優先順位が決まるため、表示をさせたいカテゴリになってくれない状況です。

    パンくず表示例)
    【表示させたいもの】HOME > エリア > 中野区 > 物件名
    【実際】      HOME > 金額 > 3000~5000万円 > 物件名

    実際のサイトURL例

    Breadcrumb NavXTを用いなくても良いのですが、表示させたいものを実現するためにはどのような記述をすれば良いか教えていただけますでしょうか。

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

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • こんにちは

    使ったことはありませんがこちらで作者様がこれでできると思うよと言っています

    トピック投稿者 kitchen812

    (@kitchen812)

    ありがとうございます。

    サイト訪問し、プラグインをインストールしてみましたが、変化ありませんでした。

    英語力がなく、理解しきれていないこともあり、管理画面にも設定が追加された感じもなくどのようにすれば良いかわからない状況です。

    お手数をおかけしますが、詳細をお教えいただけますと幸いです。

    入れてみました。
    どうやら、投稿一つ一つで設定するようですね
    記事編集画面にPrimary カテゴリーというボックスができていると思いますので
    そこから選択するようです。

    投稿全体で優先順位を選択する場合は
    先のサイトで

    「Breadcrumb NavXTはget_the_terms()で出てくる順序になる」とあるので
    そこをフィルターフックで何とかできればいいかもしれません。
    若しくは、新規投稿の際にjavascriptを読み込ませて先のセレクトボックスを
    自動で変更させるような感じになるかと思います。

    こちらで確認できました。
    先ほどのプラグインは削除した上で
    ps_taxonomy_expanderをインストールして
    functions.phpに

    function my_priority_category_sort($a,$b){
    	if ($a->term_order == $b->term_order) {
    		return 0;
    	}
    	return ($a->term_order < $b->term_order) ? -1 : 1;
    }
    
    function my_priority_category($terms) {
    	if (is_single()){
    		usort($terms,'my_priority_category_sort');
    	}
    	return $terms;
    }
    add_filter('get_the_terms', 'my_priority_category');

    を追記すれば、管理画面のterm orderの上のが表示されると思います。
    表示する部分を更に限定する場合はis_singleの判定あたりを適当に変えてみて下さい。

    トピック投稿者 kitchen812

    (@kitchen812)

    jdbb様

    追加の調査とアドバイスをありがとうございます!

    頂戴した内容を実行してみたところ、エリアを一番上にしているのですが、それでも

    HOME > 金額 > 3000~5000万円 > 物件名

    ではなくなったのですが、

    HOME > 条件 > 仲介手数料無料 > 物件名

    となり、表示させたいものにすることができませんでした。

    何度も申し訳ございません。こうなる原因は何かわかりますでしょうか。

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

    個人的なメモですが

    http://tenman.info/labo/snip/archives/3761

    お役に立ちますか?

    トピック投稿者 kitchen812

    (@kitchen812)

    nobita様

    ありがとうございます。

    フォーラムにて相談する前に、かなり試行錯誤しておりまして、その中でご紹介いただいたページも見ておりましたが、自力では解決ができず、相談をいたしました。

    もしよろしければ、今回の問題解決にお力をお貸しいただけますと幸いです。

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

    カテゴリが複数ある場合の、表示の矯正をフィルタなどで行おうとすると、環境的な事(環境の再現)と、かなり細かな作業になるので、直接お手伝いは困難と思いますが、

    パンくず表示例)
    【表示させたいもの】HOME > エリア > 中野区 > 物件名
    【実際】      HOME > 金額 > 3000~5000万円 > 物件名

    このように、表示したいパンくずとのギャップが激しいページがあるという事でしたら、
    その部分だけ、

    http://webcheatsheet.com/PHP/get_current_page_url.php

    のようなとり方で、現在のURLを取得して、そのURLを元に、

    URLから、dirname()などを使って、パンくずの階層を取り出すような事で、手製のパンくずを作るという事は( 区名のテキストはbasename()から以下のような感じで置き換えを行うとかで、)

    $areaneme = array(‘nakanoku’ => ‘中野区’,……);

    難しいのですか?

    多階層カテゴリということを忘れていました。
    parentが0まで遡ればいいだけですので

    function my_priority_category_parent($t){
    	if($t->parent){
    		$pt = get_term($t->parent,$t->taxonomy);
    		if ($pt->parent){
    			return my_priority_category_parent($pt);
    		}else{
    			return $pt;
    		}
    	}else{
    		return $t;
    	}
    }
    
    function my_priority_category_sort($a,$b){
    	$c = my_priority_category_parent($a);
    	$d = my_priority_category_parent($b);
    	if ($c->term_order == $d->term_order) {
    		return 0;
    	}
    	return ($c->term_order < $d->term_order) ? -1 : 1;
    }
    
    function my_priority_category($terms) {
    	if (is_single()){
    		usort($terms,'my_priority_category_sort');
    	}
    
    	return $terms;
    }
    add_filter('get_the_terms', 'my_priority_category');

    先ほど追加した部分を上のに差し替えてやればいいかと思います。
    ただ、get_terms自体を変更するものですので
    局地的に変更したいというのであればnobita様の方法で
    その部分だけ書き方を変えたり、Breadcrumb NavXTのフックがあれば
    そちらに引っ掛けるほうが影響は少ないと思います。

    トピック投稿者 kitchen812

    (@kitchen812)

    nobita様

    追加のアドバイスありがとうございます!
    個別ではなく全体で変更を加えたかったこと、URLが今後変更される可能性があり、URLに依存しない方法で変更をしたかったため、jdbb様の方法で実装いたしました。

    jdbb様

    追加で頂戴した内容で無事に表示させることができました!1週間ほど拙い知識とネットの情報を参考に悪戦苦闘していたましたので、とても嬉しいです。

    本当にありがとうございました。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「複数カテゴリを選択した投稿でのパンくずの表示カテゴリを指定したい」には新たに返信することはできません。