WordPress のテーマ TwentyTwelve にパンくずリストを追加してみたのでそのメモ書きです。
「パンくずリスト」は WordPress プラグインを使わずに追加するのを前提としています。
完成は下記のような感じになります。
パンくずリスト完成イメージ
このパンくずリストは下記の方法で TwentyTwelve に実装しました。
スポンサーリンク
TwentyTwelveへパンくずリストを追加する方法
パンくずリストは is_home(), is_tag() 等の WordPress 関数を利用して、閲覧ページの判定とそれに紐付けた処理を行なっていく必要があります。
詳細は端折って、まずはパンくずリストを表示するための関数を functions.php に追加します。
function breadcrumb() { global $post; echo '<div class="breadcrumb">'; echo '<ul>'; echo '<li><a href="' . home_url() . '/">Home</a></li>'; if ( ! is_home() ) { echo '<li> > </li>'; } if ( is_search() ) { echo '<li>Search</li>'; } elseif ( is_tag() ) { echo '<li>Tag: <i>' . single_tag_title('' , false ) . '</i> </li>'; } elseif( is_404() ) { echo '<li>404 Not found</li>'; } elseif( is_date() ) { if ( is_day() ) { echo '<li><a href="'. get_year_link(get_query_var('year')) .'">'. get_query_var('year') .'年</a></li>'; echo '<li> > </li>'; echo '<li><a href="'. get_month_link(get_query_var('year'), get_query_var('monthnum')) .'">'. get_query_var('monthnum') .'月</a></li>'; echo '<li> > </li>'; echo '<li>'. get_query_var('day') .'日</li>'; } elseif ( is_month() ) { echo '<li><a href="'. get_year_link(get_query_var('year')) .'">'. get_query_var('year') .'年</a></li>'; echo '<li> > </li>'; echo '<li><a href="'. get_month_link(get_query_var('year'), get_query_var('monthnum')) .'">'. get_query_var('monthnum') .'月</a></li>'; } else { echo '<li>'. get_query_var('year') .'年</li>'; } } elseif( is_category() ) { $cat = get_queried_object(); if ( $cat->parent != 0 ) { $ancestors = array_reverse(get_ancestors( $cat->cat_ID, 'category' )); foreach ( $ancestors as $ancestor ) { echo '<li><a href="'. get_category_link($ancestor) .'">'. get_cat_name($ancestor) .'</a></li>'; echo '<li> > </li>'; } echo '<li>'. $cat->cat_name .'</li>'; } else { echo '<li>'. $cat->cat_name .'</li>'; } } elseif( is_page() ) { if ( $post->post_parent != 0 ) { $ancestors = array_reverse( $post->ancestors ); foreach($ancestors as $ancestor) { echo '<li><a href="'. get_permalink($ancestor) .'">'. get_the_title($ancestor) .'</a></li>'; echo '<li> > </li>'; } echo '<li>'. $post->post_title .'</li>'; } else { echo '<li>'. $post->post_title .'</li>'; } } elseif( is_attachment() ) { $img = preg_replace( '/^http:[^ \t\n\r\f]+\//', '', wp_get_attachment_url() ); echo '<li>'. $img .'</li>'; } elseif( is_single() ) { $categories = get_the_category($post->ID); $cat = $categories[0]; if( $cat->parent != 0) { $ancestors = array_reverse(get_ancestors( $cat->cat_ID, 'category' )); foreach ( $ancestors as $ancestor ) { echo '<li><a href="'. get_category_link($ancestor) .'">'. get_cat_name($ancestor) .'</a></li>'; echo '<li> > </li>'; } echo '<li><a href="' . get_category_link($cat->cat_ID) .'">'. $cat->cat_name .'</a></li>'; echo '<li> > </li>'; echo '<li>'. $post->post_title .'</li>'; } else { echo '<li><a href="' . get_category_link($cat->cat_ID) .'">'. $cat->cat_name .'</a></li>'; echo '<li> > </li>'; echo '<li>'. $post->post_title .'</li>'; } } elseif ( is_paged() ) { $no = (get_query_var('paged')); if ( ! $no ) { $no = '1'; } echo '<li> > </li>'; echo '<li>Page: '. $no .'</li>'; } else {} echo '</ul>'; echo '</div>'; echo '<div class="breadcrumb_end"></div>'; }
※ 2013/05/22 – 109, 115 行目の <li> タグが抜けていたので修正しました。
次にパンくずリストを表示したい場所に下記コードを追加します。
<?php breadcrumb(); ?>
今回はヘッダ部分へ追加したいので TwentyTwelve の親テーマ内にある header.php を子テーマディレクトリへコピーしてから編集します。
# cd wp-content/themes/twentytwelve-child # cp ../twentytwelve/header.php . # vi header.php
こんな感じに 53 行目に追加しました。
if ( ! empty( $header_image ) ) : ?> <a href="<?php echo esc_url( home_url( '/' ) ); ?>"><img src="<?php echo esc_url( $header_image ); ?>" class= "header-image" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt= "" /></a> <?php endif; ?> </header><!-- #masthead --> <?php breadcrumb(); ?> <div id="main" class="wrapper">
次にスタイルシートで配置の調整をします。下記のように追加してみました。
.breadcrumb li { float: left; } .breadcrumb_end { clear:both; }
これでパンくずリストの実装は完了です。
パンくずリストの表示例 (抜粋)
上記で追加した関数によって下記ページを表示した場合に「パンくずリスト」が表示されるようになります。
- ホーム
- 検索結果
- タグ
- 404 エラー
- 日付アーカイブ
- カテゴリー
- 固定ページ
- 添付ファイル
- 個別ページ
- ページネーション
基本的にはホームを起点に「 Home > 表示しているページ名 」のように表示されます。
カテゴリー、固定ページ、個別ページのカテゴリーに関しては「親」がある場合にはそれも表示するようになっています。
カテゴリーに親カテゴリがある場合の例
固定ページに親がある場合の例
また、添付ファイルの場合は下記のように「ファイル名」を表示するようにしています。
添付ファイルの例
簡単ですがこのようなパンくずリストになります。
詳細は長くなってしまうので端折りましたが今回は下記のページを参考に作成しました。
長い記事ですが理解を深めたい方は必見だと思います。
参考にしたページ