My Vector Space

人生は寄り道してなんぼ

プラグインを使わずに、コードを追加するだけでパンくずリストを設定する方法

f:id:ooigawa-bitter-sweet:20150523101927j:plain

プラグインを使わずにコードを追加するだけで「パンくずリスト」を設定する方法をまとめておきます。

手順としては まず「functions.php」ファイルに記述する作業になるので その際の注意点から。

この「functions.php」ファイルは、関数ファイルが集約されていて 管理画面の表示やサイト表示をする際にも読み込まれるファイルで、特別なファイルという位置づけにあります。

カスタマイズしたりプラグインを追加する時は、この「functions.php」ファイルの編集をするプロセスを踏むことが多くなります。

編集の際は細心の注意が必要で、記述ミスが1文字でもあるとエラーメッセージが表示されて画面が真っ白になり、管理画面にもサイトにもアクセスできなくなってしまいます。

つまり データが消えてしまうということです。

そうなった場合、初期の段階であればデータ量も少ないので大きなダメージはないですが、内容量が多い状態のものであれば、その損失は計り知れません。

なので、「function.php」ファイルをいじる際は、念のためにバックアップを取っておいた方が安全です。

注意点

「function.php」ファイルをいじる際は、念のためにバックアップを取っておく。

こういった注意点を踏まえて、「functions.php」ファイルに以下のコードを記述していきます。

phpファイルは「 <?php 」 で始まり 「 ?> 」で終わるので、この間のどこかの箇所に入れる。

 【 functions.php 】
 1
  <?php
 2
  function breadcrumb($divOption = array("id" => "breadcrumb", "class" =>"clearfix")){
 3
      global $post;
 4
      $str ='';
 5
      if(!is_home()&&!is_admin()){ /* !is_admin は管理ページ以外という条件分岐 */
 6
          $tagAttribute = '';
 7
          foreach($divOption as $attrName => $attrValue){
 8
              $tagAttribute .= sprintf(' %s="%s"', $attrName, $attrValue);
 9
          }
 10
          $str.= '<div'. $tagAttribute .'>';
 11
          $str.= '<ul>';
 12
          $str.= '<li><a href="'. home_url() .'/">HOME</a></li>';
 13
          $str.= '<li>&gt;</li>';
 14
 
 15
          if(is_category()) {           //カテゴリーのアーカイブページ
 16
              $cat = get_queried_object();
 17
              if($cat -> parent != 0){
 18
                  $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
 19
                  foreach($ancestors as $ancestor){
 20
                      $str.='<li><a href="'. get_category_link($ancestor) .'">'. get_cat_name($ancestor)
 21
                      .'</a></li>';
 22
                      $str.='<li>&gt;</li>';
 23
                  }
 24
               }
 25
               $str.='<li>'. $cat -> name . '</li>';
 26
           } elseif(is_single()){           //ブログの個別記事ページ
 27
               $categories = get_the_category($post->ID);
 28
               $cat = $categories[0];
 29
               if($cat -> parent != 0){
 30
                   $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
 31
                   foreach($ancestors as $ancestor){
 32
                       $str.='<li><a href="'. get_category_link($ancestor).'">'. get_cat_name($ancestor)
 33
                       . '</a></li>';
 34
                       $str.='<li>&gt;</li>';
 35
                   }
 36
                }
 37
               $str.='<li><a href="'. get_category_link($cat -> term_id). '">'. $cat-> cat_name
 38
               . '</a></li>';
 39
               $str.='<li>&gt;</li>';
 40
               $str.= '<li>'. $post -> post_title .'</li>';
 41
           } elseif(is_page()){           //固定ページ
 42
               if($post -> post_parent != 0 ){
 43
                   $ancestors = array_reverse(get_post_ancestors( $post->ID ));
 44
                   foreach($ancestors as $ancestor){
 45
                       $str.='<li><a href="'. get_permalink($ancestor).'">'. get_the_title($ancestor) .'</a>
 46
                       </li>';
 47
                       $str.='<li>&gt;</li>';
 48
                   }
 49
               }
 50
               $str.= '<li>'. $post -> post_title .'</li>';
 51
           } elseif(is_date()){           //日付ベースのアーカイブページ
 52
               if(get_query_var('day') != 0){           //年別アーカイブ
 53
                   $str.='<li><a href="'. get_year_link(get_query_var('year')). '">' .
 54
                   get_query_var('year'). '年</a></li>';
 55
                   $str.='<li>&gt;</li>';
 56
                   $str.='<li><a href="'. get_month_link(get_query_var('year'), get_query_var
 57
                   ('monthnum')). '">'. get_query_var('monthnum') .'月</a></li>';
 58
                   $str.='<li>&gt;</li>';
 59
                   $str.='<li>'. get_query_var('day'). '日</li>';
 60
               } elseif(get_query_var('monthnum') != 0){           //月別アーカイブ
 61
                    $str.='<li><a href="'. get_year_link(get_query_var('year')) .'">'.
 62
                    get_query_var('year') .'年</a></li>';
 63
                    $str.='<li>&gt;</li>';
 64
                    $str.='<li>'. get_query_var('monthnum'). '月</li>';
 65
                } else {           //年別アーカイブ
 66
                    $str.='<li>'. get_query_var('year') .'年</li>';
 67
                }
 68
            } elseif(is_search()) {           //検索結果表示ページ
 69
                $str.='<li>「'. get_search_query() .'」で検索した結果</li>';
 70
            } elseif(is_author()){           //投稿者のアーカイブページ
 71
                $str .='<li>投稿者 : '. get_the_author_meta('display_name', get_query_var('author'))
 72
                 .'</li>';
 73
            } elseif(is_tag()){           //タグのアーカイブページ
 74
                $str.='<li>タグ : '. single_tag_title( '' , false ). '</li>';
 75
            } elseif(is_attachment()){          //添付ファイルページ
 76
                $str.= '<li>'. $post -> post_title .'</li>';
 77
            } elseif(is_404()){           //404 Not Found ページ
 78
                $str.='<li>404 Not found</li>';
 79
          } else{           //その他
 80
                $str.='<li>'. wp_title('', true) .'</li>';
 81
          }
 82
          $str.='</ul>';
 83
          $str.='</div>';
 84
      }
 85
      echo $str;
 86
  }
 87
  ?>
 88
 

次に呼び出しコードで呼び出します。
以下のコードを表示したいテンプレートに追加します。

 【 index.php 】
 1
  <?php breadcrumb(); ?>

以上です。
デザインやレイアウトはデフォルトのままなので、カスタマイズする場合はCSSで調整していけば完成。

参考サイトhttps://gist.github.com/wate/50a4186223f187128549

 

 

関連記事WordPressカスタマイズ関連の記事

PAGE TOP