Wordpressでプラグインを使わずにパンくずリストを実装する方法。

一番簡単に実装するならYoastのパンくずリストを使おう。SEO対策ですでに入れてると思うのでついでに使うのが吉。

Yoast入れてるなら次のコードでパンくずリストを設置できる。

```php
<?php
if ( function_exists('yoast_breadcrumb') ) {
  yoast_breadcrumb( '<div id="breadcrumbs">','</div>' );
}
?>
```

## プラグイン使わずパンくずリストを実装する
以下のコードをfunctions.phpに追記する。

パラメータにはhtmlタグ用のclassを指定する配列を入れている。

```php
if ( ! function_exists( 'my_custom_breadcrumb' ) ) {
	/**
	 * Desiplay Breadcrumb
	 * $class = ['ol' => 'ol-class','li' => 'li-class','a' => 'a-class','bar' => 'bar-class',];
	*/
	function my_custom_breadcrumb($class) {
		global $post;
		if ( !is_front_page() ) {
			echo '<ol class="'.$class['ol'].'" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">';

			echo '<li class="'.$class['li'].'" itemprop="title"><a class="'.$class['a'].'" href="'.home_url().'" itemprop="url">Home</a></li>';
			echo '<li class="'.$class['bar'].'">/</li>';

			if ( is_home() ) {
				$title = wp_title('',false,'');
				echo '<li class="'.$class['li'].'" itemprop="title">'.$title.'</li>';
			} elseif ( is_category() ) {
				$cat_id = get_query_var('cat');
				$cat_link = get_category_link( $cat_id );
				$cat_name = get_cat_name( $cat_id );

				echo '<li class="'.$class['li'].'" itemprop="title">';
				echo '<a class="'.$class['a'].'" href="'.$cat_link.'">'.$cat_name.'</a></li>';
			} elseif ( is_single() ) {
				$category = get_the_category();
				$cat_link = get_category_link( $category[0]->term_id );
				$cat_name = $category[0]->cat_name;
				
				echo '<li class="'.$class['li'].'" itemprop="title">';
				echo '<a class="'.$class['a'].'" href="'.$cat_link.'">'.$cat_name.'</a></li>';
				echo '<li class="'.$class['bar'].'">/</li>';
				echo '</li><li class="'.$class['li'].'" itemprop="title">';
				the_title();
				echo '</li>';
			} elseif ( is_page() ) {
				if($post->post_parent){
					$anc = get_post_ancestors( $post->ID );
					$title = get_the_title();
					foreach ( $anc as $ancestor ) {
						$output = '<li class="'.$class['li'].'" itemprop="title"><a class="'.$class['a'].'" href="'.get_permalink($ancestor).'" title="'.get_the_title($ancestor).'" itemprop="url">'.get_the_title($ancestor).'</a></li>';
					}
					echo $output;
					echo '<li class="'.$class['li'].'" title="'.$title.'" itemprop="title"> '.$title.'</li>';
				} else {
					echo '<li class="'.$class['li'].'">'.get_the_title().'</li>';
				}
			} elseif ( is_tag() ) {
				echo'<li class="'.$class['li'].'" itemprop="title">';
				single_tag_title();
				echo'</li>';
			} elseif ( is_day() ) {
				echo'<li class="'.$class['li'].'" itemprop="title">';
				echo get_the_date();
				echo'</li>';
			} elseif ( is_month() ) {
				echo'<li class="'.$class['li'].'" itemprop="title">';
				echo get_the_date('Y - M');
				echo'</li>';
			} elseif ( is_year() ) {
				echo'<li class="'.$class['li'].'" itemprop="title">';
				echo get_the_date('Y');
				echo'</li>';
			} elseif ( is_author() ) {
				echo'<li class="'.$class['li'].'" itemprop="title">';
				the_author_meta('display_name');
				echo'</li>';
			} elseif ( is_search() ) {
				echo'<li class="'.$class['li'].'" itemprop="title">';
				the_search_query();
				echo'</li>';
			}

			echo '</ol>';
		}
	}
}
```

## パンくずリストをテンプレートで表示
一覧ページや個別記事ページの表示したい位置に設置。

htmlを出力するだけなので、navタグなどで囲んでもOK。

```php
$classList = [
	'ol' => 'ol-class',
	'li' => 'li-class',
	'a' => 'a-class',
	'bar' => 'bar-class',
];
my_custom_breadcrumb($classList);
```