- 更新日: 2016年3月17日
- WordPress
WordPressでパンくずリスト・複数の親子カテゴリーを表示
WordPress で、2個以上の複数の親子カテゴリーを、パンくずリストとして表示する方法です。パンくずリストをしっかりと表示させるとユーザビリティーが向上して、ブログ・サイトのページビューも増えやすいかと思います。プラグインを使わない方法ですが、プラグインを使わなくても簡単に実現できます。
— 環境 —
WordPress 4.4.2
パンくずリスト表示に get_category_parents() を使う
get_category_parents() というテンプレート用の関数を使って、カテゴリーのパンくずリストを表示させます。get_category_parents() の使い方は以下のとおりです。公式ドキュメントからの引用。
get_category_parents( $id, $link, $separator, $nicename, $visited );指定されたカテゴリーの親カテゴリーのリストを取得します。 指定されたカテゴリーも含めて、階層の順序で出力します。
パラメータ(引数)
$id
(整数) (必須) カテゴリー ID
初期値: なし
$link
(真偽値) (オプション) 各カテゴリーへのリンクを出力するか否か。
初期値: false – 出力しない
$separator
(文字列) (オプション) 各カテゴリーを区切る文字列。
初期値: ‘/’
$nicename
(真偽値) (オプション) カテゴリー名の代わりにスラッグを出力するか否か。
初期値: false – カテゴリー名を出力
$visited
(配列) (オプション) リンク済みカテゴリーの配列。このパラメータは、この関数が自分を再帰的に呼び出すとき、結果のリストにカテゴリーの重複を避けるために使用されます。
初期値: array() – 空の配列
第1引数に、親カテゴリーのリストを取得したいカテゴリーIDを指定する。リンク付きで出力する場合は、第2引数に true を指定、第3引数にセパレーター(区切り文字)を指定します。
パンくずリスト表示用の functions.php 関数を作成
では、以降は具体的な作業手順の説明です。まずは、パンくずリスト取得用のヘルパー的な関数を functions.php に作成します。
functions.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/* * breadcrumb for category */ function get_category_breadcrumb() { $cat_id = null; if ( is_single() ) { $category = get_the_category(); $cat_id = $category[0]->cat_ID; } if ( is_category() ) { $cat_name = single_cat_title('', false); $cat_id = get_cat_ID($cat_name); } $separator = ' > '; $chain = get_category_parents( $cat_id, true, $separator ); return $chain; } |
以上で、functions.php に作成する関数は終了。この get_category_breadcrumb() 関数は、個別記事テンプレート(single.php), カテゴリーページのテンプレート(category.php)で使用できます。
あとは、個別の記事ページ(single.php)やカテゴリーページ(category.php)のテンプレートファイルに、パンくずリストを表示させます。
single.php / category.php
1 2 3 4 5 |
<ul class="breadcrumb"> <li class="cat"> <?php echo get_category_breadcrumb(); ?> </li> </ul> |
これで個別記事ページやカテゴリーページで、パンくずリストがリンク付きで以下のように表示されます。
1 2 3 4 |
親カテゴリー > 子カテゴリー > 親カテゴリー > 子カテゴリー > 孫カテゴリー > |
簡単ですね^^
末尾の区切り文字を削除したバージョン
自分の場合、末尾の区切り文字( > )を表示せずに、以下のようにパンくずリストを表示したかった。
1 2 3 4 |
親カテゴリー > 子カテゴリー 親カテゴリー > 子カテゴリー > 孫カテゴリー |
なので、get_category_parents() で取得した親子カテゴリーのパンくずリストを、ちょっと自前で修正するコードを追記しました。
functions.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* * breadcrumb for category */ function get_category_breadcrumb() { $cat_id = null; if ( is_single() ) { $category = get_the_category(); $cat_id = $category[0]->cat_ID; } if ( is_category() ) { $cat_name = single_cat_title('', false); $cat_id = get_cat_ID($cat_name); } $separator = ' > '; $chain = get_category_parents( $cat_id, true, $separator ); $breadcrumb = substr( $chain, 0, -strlen($separator) ); return $breadcrumb; } |
substr() を使って末尾の区切り文字(ここでは末尾の ‘ > ‘ の文字列)を削除して、パンくずリストを返すようにしました。これで、WordPress の記事ページで、リンク付きで以下のように表示されます。
1 2 3 4 |
親カテゴリー > 子カテゴリー 親カテゴリー > 子カテゴリー > 孫カテゴリー |
どちらでもお好みのほうをご利用ください。以上、WordPress で親子カテゴリーをパンくずリスト表示する方法でした!
- – 参考リンク –
- get_category_parents() / category-template.php in tags/4.4.2/src/wp-includes – WordPress Trac
- WordPress › Support » Get category id for category.php page
- PHP: substr – Manual
- WordPress の関連記事
- WordPressをTwitter Bootstrapでレスポンシブデザイン対応
- WordPressブログに更新日を表示
- WordPressにOGP設定・プラグインなしでFacebook/Twitter Cards対応
- WordPressでプライベートな非公開ブログを運用
- BackWPupでエラー ERROR: Dropbox API: (35)
- ブログ・WordPress記事をFacebookに自動投稿するIFTTT設定
- RSS Graffitiが終了…代替にはIFTTTが使える
- WordPressで親カテゴリーに属する子カテゴリーの一覧を出力
- wp_list_categoriesでリンクなしで投稿数ゼロのカテゴリを表示 – WordPress
- WordPressでmeta descriptionを設定(プラグインなし版)
Leave Your Message!