パンくずリストで表示したいカテゴリを選択して表示する方法

投稿日:

本日の人気記事BEST10

所要時間目安: 約 7

パンくずリスト

WordPress カスタマイズ カスタマイズ 伝えたいこと 備忘録

パンくずリスト

WordPressでブログを始めてからずっとなんとかならないかなぁ。
と思っていたことがあります。

それは、
パンくずリストが複数のカテゴリを選択して投稿した際には、
英数字(A~Z)から優先されて日本語(五十音順)の順になってしまい、
思っていたカテゴリのパンくずが表示されないです。

これまでもいろいろと試してみましたが、
これが今のところ一番かなぁ。

と思うので備忘録として残しておきたいと思います。

とても助けてくれたサイト(参考サイト)

記事を複数のカテゴリに所属させた時に、パンくずリストに最も表示させたいカテゴリが表示されず、やきもきした経験はないでしょうか。



スポンサーリンク

目次に戻る


スポンサーリンク

具体的な方法です。

function.php内に以下のコードを記載します。

一気に書き込みます。
(上記参考サイトさんのコードそのものだとliやulがあるので出力後に縦表示になってしまう為、ul、liを省いています。)

 

//パンくずリスト表示対象カテゴリをカスタムフィールドに追加追加するコードここから
 add_action('admin_menu', 'add_breadcrumbs_category_meta_box');
 add_action('save_post', 'save_breadcrumbs_category_custom_fields');

 // パンくずリスト用メタボックスの追加
 function add_breadcrumbs_category_meta_box() {
 add_meta_box( 'my_sectionid4', 'パンくずリスト用カテゴリ', 'breadcrumbs_category_custom_fields', 'post', 'advanced' );
 }

 // パンくずリストカテゴリ選択用カスタムフィールドの入力フォーム作成と値の設定
 function breadcrumbs_category_custom_fields() {
 global $post;

 $options = get_the_category($post->ID);
 $n = count($options);

 $radio_field = get_post_meta($post->ID,'_organizer_breadcrumbs_category',true);

 for ($i=0; $i<$n; $i++) {
 $option = $options[$i];
 if ($option -> cat_ID == $radio_field) {
 echo '<input type="radio" name="_organizer_breadcrumbs_category" value="'.esc_html($option->cat_ID).'" checked /> '.$option->cat_name.' ';
 } else {
 echo '<input type="radio" name="_organizer_breadcrumbs_category" value="'.esc_html($option->cat_ID).'" /> '.$option->cat_name.' ';
 }
 }
 }

 // パンくずリスト用カテゴリのカスタムフィールドの保存
 function save_breadcrumbs_category_custom_fields( $post_id ) {

 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;

 $meta_key = '_organizer_breadcrumbs_category';

 $meta_value_new = $_POST[$meta_key];

 $meta_value_current = get_post_meta($post_id, $meta_key, true);

 $cats = get_the_category($post_id);
 if(!empty($cats)){
 $meta_value_default = $cats[0]->cat_ID;
 }

 if(!empty($meta_value_current) ){
 update_post_meta($post_id, $meta_key, $meta_value_new);
 }else{
 if(!empty($meta_value_new)){
 update_post_meta($post_id, $meta_key, $meta_value_new);
 }else{
 if(!empty($meta_value_default)){
 update_post_meta($post_id, $meta_key, $meta_value_default);
 }
 }
 }
 }
 //パンくずリスト表示対象カテゴリをカスタムフィールドに追加追加するコードここまで

//パンくずリスト関数
 //パンくずリストを出力する関数
 function breadcrumb(){
 global $post;
 $str ='';
 if(!is_home()&&!is_admin()){
 $str.= '<div id="breadcrumb" class="clearfix">';
 $str.= '';
 $str.= '<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. home_url() .'/"><span itemprop="title"><strong>home</strong></span></a>';
 $str.= '&gt;';
 if(is_search()){
 $str.='「'. get_search_query() .'」で検索した結果';
 } elseif(is_tag()){
 $str.='タグ : '. single_tag_title( '' , false ). '';
 } elseif(is_404()){
 $str.='404 Not found';
 } elseif(is_date()){
 if(get_query_var('day') != 0){
 $str.='<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_year_link(get_query_var('year')). '"><span itemprop="title">' . get_query_var('year'). '年</span></a>';
 $str.='&gt;';
 $str.='<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_month_link(get_query_var('year'), get_query_var('monthnum')). '"><span itemprop="title">'. get_query_var('monthnum') .'月</span></a>';
 $str.='&gt;';
 $str.=''. get_query_var('day'). '日';
 } elseif(get_query_var('monthnum') != 0){
 $str.='<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_year_link(get_query_var('year')) .'"><span itemprop="title">'. get_query_var('year') .'年</span></a>';
 $str.='&gt;';
 $str.=''. get_query_var('monthnum'). '月';
 } else {
 $str.=''. get_query_var('year') .'年';
 }
 } elseif(is_category()) {
 $cat = get_queried_object();
 if($cat -> parent != 0){
 $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
 foreach($ancestors as $ancestor){
 $str.='<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_category_link($ancestor) .'"><span itemprop="title">'. get_cat_name($ancestor) .'</span></a>';
 $str.='&gt;';
 }
 }
 $str.= '<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">'. $cat -> name .'</span>';
 } elseif(is_author()){
 $str .='投稿者 : '. get_the_author_meta('display_name', get_query_var('author')).'';
 } elseif(is_page()){
 if($post -> post_parent != 0 ){
 $ancestors = array_reverse(get_post_ancestors( $post->ID ));
 foreach($ancestors as $ancestor){
 $str.='itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_permalink($ancestor).'"><span itemprop="title">'. get_the_title($ancestor) .'</span></a>';
 $str.='&gt;';
 }
 }
 $str.= '<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">'. $post -> post_title .'</span>';
 } elseif(is_attachment()){
 if($post -> post_parent != 0 ){
 $str.= '<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_permalink($post -> post_parent).'"><span itemprop="title">'. get_the_title($post -> post_parent) .'</span></a>';
 $str.='&gt;';
 }
 $str.= '<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_permalink($post -> ID).'"><span itemprop="title">' . $post -> post_title . '</span></a>';
 } elseif(is_single()){
 $cat_ID = get_post_meta($post->ID,'_organizer_breadcrumbs_category', true);
 if($cat_ID){
 $cat = get_category($cat_ID);
 } else {
 $categories = get_the_category($post->ID);
 $cat = $categories[0];
 }
 if($cat -> parent != 0){
 $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
 foreach($ancestors as $ancestor){
 $str.='<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_category_link($ancestor).'"><span itemprop="title">'. get_cat_name($ancestor). '</span></a>';
 $str.='&gt;';
 }
 }
 $str.='<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="'. get_category_link($cat -> term_id). '"><span itemprop="title">'. $cat-> cat_name . '</span></a>';
 $str.='&gt;';
 $str.= '<itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">'. $post -> post_title .'</span>';
 } else{
 $str.=''. wp_title('', false) .'';
 }
 $str.='';
 $str.='</div>';
 }
 echo $str;
 }
 //パンくずリスト関数ここまで

その後、
パンくずリストを表示したい部分に以下のコードを記載します。

<?php breadcrumb(); ?>

この記載したところに意図して選択したパンくずリストが表示されます。

 

そして、
最後にCSSで調整しました。

#breadcrumb {
 font-size: 13px;
 color: #000
 }

div#breadcrumb a {
 color: #000;
 }

 

最後に、
よくを言うなら親カテゴリとか子カテゴリとかじゃなくて、

スポンサーリンク

選択したカテゴリをすべて順番にすべてパンくずリストに表示したいと思っています。

 

以下のサイトの様に…。

えー、ほんとにどうしたの?というくらいLEDにこだわり始めている私です…。先日、ヴァレンティ製LEDフォグに替えたのですが、照射位置と発光量(光束)が今一に思えてなりませんでした。≫フォグLED化にヴァレンティ製ジュエルフォグバルブLDJ11

WordPressでも、
選択したカテゴリのすべてがパンくずリストとして表示できるようにならないかなぁ。

もしくは、
そんな方法を見つけるか作りたいなぁ…。

関連記事一部広告

スポンサーリンク

+ クリックで展開します

おすすめ!!

加圧シェイプで24時間無意識運動状態が可能!! 引き締め効果で魅力的なシルエットをサポート!! 運動している時だけでなく、仕事やプライベート就寝中にも!! 通気性がよく、体の動かしやすい伸縮性のある素材です!! 常に体が引き締まって、着心地いい!! 毎日着たい方用にセットも充実!!

女性必見のバストアップにおすすめ!!

マンガでの商品説明を販売ページに採用しています。 商品のメリットや良さが伝わりやすいです。 ★知名度と信頼度!ニュースアプリや芸能人ブログでも話題! (インスタグラム SmartNews yahoo アメーバ crooz 楽天) ●知名度が高く購入率の高い商品です。 ●ニュースサイトの紹介でも話題となり、有名タレント、モデル等にも使用して頂きブログなどでも紹介されている信頼度の高い商品です。 ●まとめ買いが多いのが特徴です。

-WordPress, カスタマイズ, カスタマイズ, 伝えたいこと, 備忘録
-

関連記事

エクストレイルとハリアー

伝えたいこと 時事ネタ

エクストレイル20Xtt特別仕様車ハリアー最大値引きはいくらなのか

ハリアーもエクストレイルも今年の来月6月には、マイナーチェンジをむかえます。両者ともに値引率、値引きしてもらうには絶好の時期でもあります。 そこで、ハリアーとエクストレイルについてディーラーにて値引き・・・続きを読む

エンジンスターターリモコン

メンテナンス 備忘録

カーメイトのエンジンスターターでエラー15表示と対処方法

夏冬に特に重宝するのが、 エンジンスターターです。 メーカーはCARMATEやCOMTECユピテルなど各社ありますが、 一番のオススメはリモコンから多くの情報を得ることができるカーメイト製品です。 な・・・続きを読む

Google Analytics「not set」

インターネット セキュリティ 伝えたいこと 備忘録

Google Analytics「not set」が気になったので調べてみた

多くの人がアクセス解析に用いていると思われるGoogle Analyticsで、ときおり見かける「not set」というキーワードがあります。 他にも、「not provided」もありますが…。こち・・・続きを読む

AFFINGER4

AFFINGER4Pro WordPress 不具合 伝えたいこと 備忘録

AFFINGER4でのDeprecated:Non-static method WPblogAdProp::setAd1()

Deprecated: Non-static method WPblogAdProp::setAd1() should not be called statically in /home/izu/iz・・・続きを読む

目次に戻る

よろしかったらシェアよろしくお願いします。



この記事が良かったら
いいね!お願いします(#^.^#)

WordPressデビュー津々浦々の
最新情報をお届けします

言えないことはTwitterで!!



  • この記事を書いた人
  • 最新記事

izumi

プロフィールページ詳細

はじめまして、izumiの旦那です。医療ミスにより長胸神経麻痺になってしまい若干の障害がありブログをさせていただいています。共同運営(しばらくは単独になると思います。)になりつつありますがよろしくお願いいたします。

Follow Me !

Copyright© WordPressデビュー津々浦々 , 2020 All Rights Reserved Powered by AFFINGER5.