2014年07月05日(Sat)
パンくずリストをプラグインを使わずに作る:カテゴリー編、シングルページ(個別投稿)
テストとしてカテゴリー用とシングルページ(個別投稿)用のパンくずリストを作ってみました。
仕組み的には、殆ど一緒ですがシングルページ用は複数のカテゴリーに属している場合にも対応しています。
カテゴリー用は、2ページ目以降のページ数も表示される仕様です。
パンくずリストの表示
コードとCSSは以下の通りです。
カテゴリー用
//カテゴリーアーカイブが表示されているかチェック if(is_category()){ echo '<ul class="breadcrumb">'; echo '<li><a href="'.home_url().'">HOME</a></li>'; //ページ情報の取得 $gqo = get_queried_object(); //親カテゴリーのチェック if($gqo -> parent){ //先祖カテゴリーの取得 $ancestors = array_reverse(get_ancestors($gqo -> cat_ID, 'category')); //親カテゴリーの数だけ繰り返し処理 foreach($ancestors as $ancestor){ echo '<li class="list"><a href="'.get_category_link($ancestor).'">'.get_cat_name($ancestor).'</a></li>'; } } //ページ番号の取得 $paged = get_query_var('paged'); //2ページ目以降 if($paged){ echo '<li class="list"><a href="'.get_category_link($gqo -> cat_ID).'">'.$gqo -> cat_name.'</a></li>'; echo '<li class="list"><strong>'.$paged.'ページ目</strong></li>'; }else{ echo '<li class="list"><strong>'.$gqo -> cat_name.'</strong></li>'; } echo '</ul>'; }
シングルページ用(個別投稿)
//個別の記事を表示しているかどうかをチェック if(is_single()){ echo '<ul class="breadcrumb">'; echo '<li><a href="'.home_url().'">HOME</a></li>'; //ページ情報の取得 $gqo = get_the_category(); //カウント初期値 $gqo_cnt = 0; //ループ処理 foreach($gqo as $key => $val){ //ulタグの調整 if($gqo_cnt){ $str .= '<li class="clear"><a href="'.home_url().'">HOME</a></li>'; } //親カテゴリのチェック if($gqo[$key] -> parent){ //先祖カテゴリの取得 $ancestors = array_reverse(get_ancestors($gqo[$key] -> cat_ID, 'category')); //親カテゴリーの数だけ繰り返し処理 foreach($ancestors as $ancestor){ $str .= '<li class="list"><a href="'.get_category_link($ancestor).'">'.get_cat_name($ancestor).'</a></li>'; } } //リスト表示 $str .= '<li class="list"><a href="'.get_category_link($gqo[$key] -> cat_ID).'">'.$gqo[$key] -> cat_name.'</a></li>'; //カウントアップ $gqo_cnt++; } echo '</ul>'; }
CSS
.breadcrumb{ list-style-type:none; overflow:hidden; } .breadcrumb li{ float:left; } .breadcrumb .list:before{ content:">"; margin:0 5px; } .breadcrumb .clear{ clear:left; }
使用した関数
is_category() | カテゴリーアーカイブが表示されているかチェック |
---|---|
home_url() | 現在のブログのホームURLを返す |
get_queried_object() | ページリクエストにマッチした情報を取得 |
array_reverse() | 要素を逆順にした配列を返す |
get_ancestors() | 引数に渡されたIDで示されるオブジェクトの祖先オブジェクトのIDの配列を返す |
get_category_link() | 指定したカテゴリーIDの正しいURLをPHPの値として返す |
get_query_var() | 投稿検索に関連する変数の値を取得 |
is_single() | 個別の記事を表示しているかどうかをチェック |
get_queried_object 関数で取得したページ情報
term_id | タームID |
---|---|
name | 名前 |
slug | スラッグ名 |
term_group | グループ |
term_taxonomy_id | タクソノミーID |
taxonomy | タクソノミー名 |
description | 説明 |
parent | 親要素 |
count | カテゴリに登録されている記事数 |
filter | 適用されたフィルター名(初期値:raw) |
cat_ID | カテゴリーのID |
category_count | カテゴリーに登録されている記事数 |
category_description | カテゴリーの説明 |
cat_name | カテゴリー名 |
category_nicename | カテゴリーのスラッグ名 |
category_parent | 親カテゴリー |
【更新履歴】
- 2014年07月13日シングルページ(個別投稿)用のコードを追加
コメント(0件)
パンくずリストをプラグインを使わずに作る:カテゴリー編、シングルページ(個別投稿)に対するご意見、ご感想、情報提供など皆様からのコメントをお待ちしております。 お気軽にコメントしてください。
コメントフォーム