今回は、WordPressのプラグインを使わずにfunction.phpから呼び出してパンくずリストを表示させる実装方法をご紹介していきます!
パンくずリストとは?
パンくずリストは、現在閲覧しているWebサイトのページの位置を、階層構造に準じたリンクのリストを記述したものです。
HOME>記事タイトル
こんな感じで、ヘッダーの下あたりに表示されていることが多いです。
パンくずリストがあることで、検索エンジンのクローラーが、サイトの全体構造を把握しやすくなり、効率的なクローリングを期待できます。
パンくずリストの仕様
今回作成するパンくずリストの仕様は下記になります。
ページ | パンくずリスト |
トップページ | 表示しない |
固定ページ | HOME>ページタイトル |
投稿ページ | HOME>カテゴリ名>ページタイトル |
カテゴリーページ | HOME>カテゴリ名 |
アーカイブページ | HOME>日時 |
タグページ | HOME>タグ名 |
404ページ | HOME>お探しのページは見つかりません |
このパターンで条件分岐させて表示させていきます。
パンくずリスト実装コード
さっそく結論からお話すると、下記コードをコピペすると、先ほどの仕様にあったパンくずリストを作成することができます。
function.php
// パンくずリスト
function breadcrumb() {
$home = '<li><a href="'.get_bloginfo('url').'" >HOME</a></li>';
echo '<ul>';
if ( is_front_page() ) {
// トップページの場合は表示させない
}
// カテゴリページ
else if ( is_category() ) {
$cat = get_queried_object();
$cat_id = $cat->parent;
$cat_list = array();
while ($cat_id != 0){
$cat = get_category( $cat_id );
$cat_link = get_category_link( $cat_id );
array_unshift( $cat_list, '<li><a href="'.$cat_link.'">'.$cat->name.'</a></li>' );
$cat_id = $cat->parent;
}
echo $home;
foreach($cat_list as $value){
echo $value;
}
the_archive_title('<li>', '</li>');
}
// アーカイブ・タグページ
else if ( is_archive() ) {
echo $home;
the_archive_title('<li>', '</li>');
}
// 投稿ページ
else if ( is_single() ) {
$cat = get_the_category();
if( isset($cat[0]->cat_ID) ) $cat_id = $cat[0]->cat_ID;
$cat_list = array();
while ($cat_id != 0){
$cat = get_category( $cat_id );
$cat_link = get_category_link( $cat_id );
array_unshift( $cat_list, '<li><a href="'.$cat_link.'">'.$cat->name.'</a></li>' );
$cat_id = $cat->parent;
}
foreach($cat_list as $value){
echo $value;
}
the_title('<li>', '</li>');
}
// 固定ページ
else if( is_page() ) {
echo $home;
the_title('<li>', '</li>');
}
// 404ページの場合
else if( is_404() ) {
echo $home;
echo '<li>ページが見つかりません</li>';
}
echo "</ul>";
}
// アーカイブのタイトルを削除
add_filter( 'get_the_archive_title', function ($title) {
if ( is_category() ) {
$title = single_cat_title( '', false );
} elseif ( is_tag() ) {
$title = single_tag_title( '', false );
} elseif ( is_month() ) {
$title = single_month_title( '', false );
}
return $title;
});
CSS
/* パンくずリスト */
ul{
list-style: none;
}
li{
display: inline;
}
li a{
color: inherit;
text-decoration: none;
}
li + li:before{
content: ">";
margin:.5em;
}
表示させたい位置にテンプレートを追加
<?php breadcrumb(); ?>
あとは、スタイルシートでサイトデザインに合わせて、変更してみてください!
コードの解説
条件分岐コード
下記のコードに、パンくずリストを条件分岐で表示させるPHPのif文を書いていきます。
if ( 条件 ) {
// 条件がtrueのときに実行する内容
}
(条件)部分に下記の表の条件分岐タグを入れています。
ページ | 条件分岐タグ |
トップページの場合 | is_front_page() |
固定ページの場合 | is_page() |
投稿ページの場合 | is_single() |
カテゴリページの場合 | is_category() |
月別アーカイブページの場合 | is_archive() |
タグページの場合 | |
404ページの場合 | is_404() |
上記の表の内容を基に作成した大枠のソースコードが下記になります。
パンくずを表示させる関数は「breadcrumb」としています。
function breadcrumb() {
$home = '<li><a href="'.get_bloginfo('url').'" >HOME</a></li>';
echo '<ul>';
// トップページ
if ( is_front_page() ) {
}
// カテゴリページ
else if ( is_category() ) {
}
// アーカイブ・タグページ
else if ( is_archive() ) {
}
// 投稿ページ
else if ( is_single() ) {
}
// 固定ページ
else if( is_page() ) {
}
// 404ページ
else if( is_404() ) {
}
echo "</ul>";
}
区切り文字
パンくずリストの区切り文字(>)は、スタイルシートの擬似要素を使って表示させています。
li + li:before{
content: ">";
margin:.5em;
}
まとめ
今回は、WordPressのプラグインを使わずにfunction.phpから呼び出してパンくずリストを表示させる実装方法をご紹介していきました!
ページごとにパンくずリストを読み込む関数を追加するのも面倒だ!という方はheader.phpに追加することでヘッダーの関数を追加するだけなのでぜひ試してみてください!
以上、「コピペでOK!WordPressのプラグインを使わずにパンくずリストを表示させる実装方法」でした。
ありがとうございました!