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件)
パンくずリストをプラグインを使わずに作る:カテゴリー編、シングルページ(個別投稿)に対するご意見、ご感想、情報提供など皆様からのコメントをお待ちしております。 お気軽にコメントしてください。
コメントフォーム