WordPressでパンくずリストを出力する

以前より作りたかったけど、制作時間の都合上、その場限りの対応で済ましていたパンくずリスト。

やっとたたき台として作成が完了した。

 

パターンテストは一応したものの即席で作ったもんだから、イマイチ自信はないが・・・。

一応、現在制作中のお客さんの環境下では問題はなさそうなので、掲載します。

 

getBreadList

/*****************************************************************/
/* func名:getBreadList() */
/* 目的:パンくずリストを生成する。(マルチブログにも対応) */
/* 引数:第1引数…ホームにパンくずを表示するか(Boolean) */
/* 第2引数…サイトトップの名称(String) */
/* 第3引数…階層文字(String) */
/* 第4引数…マルチブログで同一テンプレートを使用時に、 */
/* ルートをメインブログトップにするか(Boolean) */
/* 第5引数…メインブログのID(Number) */
/*****************************************************************/
function getBreadList($arg1 = false, $arg2 = ”, $arg3 = ”, $arg4 = false, $arg5 = 1){
 global $current_blog;

 $disp = $arg1;
 $home = $arg2;
 $dchr = $arg3;
 $mult = $arg4;
 $blog = $arg5;
 $list = ”;

 if($home == ”){
  $home = ‘Home’;
 }
 if($dchr == ”){
  $dchr = ‘<span> > </span>’;
 }else{
  $dchr = ‘<span> ’.$dchr.’ </span>’;
 }

 $tmp = ”;
 if($mult){
  if($blog != 1){
   $tmp = get_home_url($blog);
  }else{
   $tmp = get_home_url(1);
  }
 }else{
  $tmp = get_home_url();
 }
 $list = ‘<a href="’.$tmp.’">’.$home.'</a>’;

 $tmp = ”;
 if($mult){
  if($blog != $current_blog->blog_id){
   $tmp = $dchr.'<a href="’.get_home_url().’">’.get_bloginfo(‘name’).'</a>’;
  }
 }
 $list = $list.$tmp;

 $tmp = ”;
 if(is_archive()){
  if(is_category() || is_tag()){
   if(is_category()){
    $str = array(‘type’=>’category’, ‘value’=>’cat’);
   }else{
    $str = array(‘type’=>’post_tag’, ‘value’=>’tag_id’);
   }

   $term = get_terms($str[‘type’], ‘get=all&include=’.get_query_var($str[‘value’]));
   $num = intval($term[0]->term_id);
   $tmp = $dchr.'<a href="’.get_term_link($num, $str[‘type’]).’">’.$term[0]->name.'</a>’;
   $num = intval($term[0]->parent);
   if(is_category() && $num != 0){
    while($num != 0){
     $term = get_terms($str[‘type’], ‘get=all&include=’.$term[0]->parent);
     $num = intval($term[0]->term_id);
     $tmp = $dchr.'<a href="’.get_term_link($num, $str[‘type’]).’">’.$term[0]->name.'</a>’.$tmp;
     $num = $term->parent;
    }
   }
  }else if(is_date()){
   if(is_year()){
    $tmp = $dchr.'<a href="’.get_year_link(get_the_date(‘Y’)).’">’.get_the_date(‘Y年’).'</a>’;
   }else if(is_month()){
    $tmp = $dchr.'<a href="’.get_month_link(get_the_date(‘Y’), get_the_date(‘m’)).’">’.get_the_date(‘Y年m月’).'</a>’;
   }else{
    $tmp = $dchr.'<a href="’.get_day_link(get_the_date(‘Y’), get_the_date(‘m’), get_the_date(‘d’)).’">’.get_the_date(‘Y年m月d日’).'</a>’;
   }
  }else if(is_author()){
   $tmp = $dchr.'<a href="’.get_the_author_link().’">’.get_the_author().'</a>’;
  }
 }else if(is_page()){
  $page = get_post(get_query_var(‘p’));
  $tmp = $dchr.'<a href="’.get_page_link($page->ID).’">’.$page->post_title.'</a>’;
  $num = intval($page->post_parent);
  if($num != 0){
   while($num != 0){
    $page = get_post($num);
    $tmp = $dchr.'<a href="’.get_page_link($page->ID).’">’.$page->post_title.'</a>’.$tmp;
    $num = intval($page->post_parent);
   }
  }
 }else if(is_single()){
  $post = get_post(get_the_ID());
  $tmp = $dchr.'<a href="’.get_the_permalink($post->ID).’">’.$post->post_title.'</a>’;
 }else if(is_search()){
  $tmp = $dchr.’検索結果’;
 }else if(is_404()){
  $tmp = $dchr.’ページが見つかりません’;
 }
 $list = $list.$tmp;

 $ret = ”;

 if(is_front_page()){
  if($disp){
   $ret = $list;
  }else if($blog != $current_blog->blog_id && $mult){
   $ret = $list;
  }
 }else{
   $ret = $list;
 }

 return $ret;
}
[/php]

仕様はヘッダーに記してあるとおりだが補足。

 

第一引数・・・トップでのパンくずの表示

トップページにパンくずを表示するかをbool値で指定する。

デフォルトはfalseで、「表示しない」設定となる。

第4引数でマルチブログの有効化がされている場合は、サブブログのトップページはトップページとして扱わず、「HOME > ブログ」のように表示する。

 

第2引数・・・トップの名称

読んで字の通り。Stringで入力します。

デフォルトでは「Home」を表示する。

get_bloginfo()でサイトタイトルでも入れれば、「株式会社CattleMute > ほにゃらら」「CattleMuteウェブログ > ほにゃらら」みたいなことができる・・・はず。

 

第3引数・・・階層文字

階層を表す文字を表示する。Stringで入力します。

デフォルトでは「>」となっており、ここの引数に「→」でも設定すれば、「HOME → ほにゃらら」ってな感じになる。

 

 

第4引数・・・階層文字

 

今回の制作の一番のキモ。

第一引数でも触れているが、この引数を有効化しておくと、サブブログのトップページはトップページとして扱わず、「HOME > ブログ」のように表示する。

Bool値で設定します。

デフォルトfalse。マルチブログでやらなければ無用の長物。

コーポレートサイトとオフィシャルブログの間で、同一のテーマで運用するときに、便利。

つーか、これがないと今やってる制作が頓挫する。アーメン。

 

第5引数・・・メインブログのID設定

おまけで作った。

ブログIDを設定すると、そのIDに対応するブログがトップとなる。

例えば、

ブログID1 → 「株式会社CattleMute」

ブログID2 → 「CattleMuteウェブログ」

で、「CattleMuteウェブログ」のブログIDである2をこの引数へ設定し、 「株式会社CattleMute」を表示した場合。

パンくずリストは「Home > 株式会社CattleMute」となる。

・・・ぜってー使わねムダな機能だわwww

 

以上、Wordpressのパンくずリストの出力関数でした。

マルチブログにも対応しており、かなり汎用的に使える・・・ハズ。

 

・・・ちゃんと探せばもっと高品質な関数は手に入るし、きょうびプラグインもありふれてるから、こんな腐ったブログのソースなんざ誰もコピペしないでしょうがねぇ・・・。

 

※150717 バグフィックス及び少しだけ仕様を変更しました。

 

カテゴリ

この記事のコメント

コメントはないです。

コメントを残す

メールアドレスが公開されることはありません。