WordPressに関する情報や技術紹介です

パンくずナビリストを返す関数

パンくずナビを返す独自関数です。リンク付きで返ってきます。

どこかにやり方がないかな?と思って探したのですが、パっと目に付いたのがプラグインしかありませんでしたので…。
わざわざパンくずリストぐらいでプラグインを導入するのもどうかと思い、簡単ですが作成しましたので参考になれば、と公開しておきます。

この関数の特長はカテゴリーのみではなくページのパンくずリストも返すところです。

function get_pankuzu_navi( $page='page', $id=0 ) {
	$output = '<a href="' . get_bloginfo('url') . '">ホーム</a> >> ';

	// idの指定が無い場合は処理しない
	if($id == 0) {
		return $output;
	}

	if($page == 'page') {
		$the_post = get_post($id);
		// 親ページを取得
		$ancestor = get_post_ancestors($the_post->parent);
		if(count($ancestor) > 0) {
			// 後方(最上階層)からループ
			for($i=(count($ancestor) - 1); $i > -1; $i--) {
				$the_page = get_page($ancestor[$i]);
				$output .= '<a href="' . get_permalink($ancestor[$i]) . '">' . $the_page->post_title . '</a> >> ';
			}
		}
	} else {
		$the_cat = get_the_category($id);
		$the_cat = $the_cat[0];
		$output .= get_category_parents($the_cat->cat_ID, true, ' ≫ ');
	}

	return $output;
}

テンプレートファイルのfunctions.phpに載せてやると良いかと思います。
引数ですが、

$page : ナビを返すリストの種類('page' or 'category')

ページの階層表示もしくはカテゴリの階層表示か選択します。

$id : post_id

下記のように使います。

// page.phpの場合
echo get_pankuzu_navi('page', $post->ID);

// single.phpの場合
echo get_pankuzu_navi('category', $post->ID);

返ってくる形が気に食わない場合は、好きなように改造すれば良いと思います。

タグ
, , , ,
トラックバックURL

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

ページTOPに戻る