• このエントリーをはてなブックマークに追加

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件)

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

コメントフォーム

【ソーシャルボタン】


TOP