ぱんくずリストをfunction.phpに書く場合

備忘っす。呼び出しは

<?php get_breadcrumbs(); ?>

DEATH(・‘д´・)

//ぱんくず

function get_breadcrumbs(){
	global $wp_query;

	if ( !is_home() ){

     define("SEPA"," » ");     //区切り文字

		// Start the UL
		echo '<ul>';
		// Add the Home link
		echo '<li><a href="'. get_settings('home') .'">'. get_bloginfo('name') .'</a></li>';

     //カテゴリアーカイブ
     if(is_category()){
     	echo SEPA;
        $cat = get_category(get_cat_ID(single_cat_title('',false)));
        //親カテゴリがある場合
        if($cat->parent){
        	$cate_pare = get_category_parents(get_cat_ID(single_cat_title('',false)),true,SEPA);
            //get_category_parentsが自カテゴリも生成しちゃうので除去
            for($i=0;$i<2;$i++){
            	$cate_pare = substr($cate_pare,0,strrpos($cate_pare,SEPA));
            }
            //【表示】親カテゴリ
            echo $cate_pare.SEPA;
        }
        //【表示】自カテゴリ
        single_cat_title();

		}
		elseif ( is_archive() && !is_category() )
		{
			echo "<li> » Archives</li>";
		}
		elseif ( is_search() ) {

			echo "<li> » Search Results</li>";
		}
		elseif ( is_404() )
		{
			echo "<li> » 404 Not Found</li>";
		}
		elseif ( is_single() )
		{
			$category = get_the_category();
			$category_id = get_cat_ID( $category[0]->cat_name );

			echo '<li> » '. get_category_parents( $category_id, TRUE, " » " );
			echo the_title('','', FALSE) ."</li>";
		}
		elseif ( is_page() )
		{
			$post = $wp_query->get_queried_object();

			if ( $post->post_parent == 0 ){

				echo "<li> » ".the_title('','', FALSE)."</li>";

			} else {
				$title = the_title('','', FALSE);
				$ancestors = array_reverse( get_post_ancestors( $post->ID ) );
				array_push($ancestors, $post->ID);

				foreach ( $ancestors as $ancestor ){
					if( $ancestor != end($ancestors) ){
						echo '<li> » <a href="'. get_permalink($ancestor) .'">'. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</a></li>';
					} else {
						echo '<li> » '. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</li>';
					}
				}
			}
		}

		// End the UL
		echo "</ul>";
	}
}

コレの場合、「ホーム » 所属カテゴリ » 現在のページ・カテゴリなど」になりますが、子カテゴリに所属している場合はカテゴリ名の数字・英字・50音によって表示が優先されます。なんかいい方法なかろうかw

下記コードの場合だと設定しておけば子カテゴリまでが表示されるけど、カテゴリ数が増えれば設定も増えて面倒臭いw

麺類(優先カテゴリ1)→うどん(子カテゴリ1)・ラーメン(子カテゴリ2)・パスタ(子カテゴリ3)みたいな感じですね。

<?php
  $cat = get_the_category();
  $bread_order = array(
'優先カテゴリ1子カテゴリ1',
'優先カテゴリ1子カテゴリ2',
'優先カテゴリ1子カテゴリ3',
'優先カテゴリ1',
'優先カテゴリ2子カテゴリ1',
'優先カテゴリ2子カテゴリ2',
'優先カテゴリ2' );
 $cnt = count($cat);
 foreach ($bread_order as $bo) {
 for($i=0; $i<$cnt; $i++) {
 if($cat[$i]->slug == $bo) break 2;
 }
 }
?>
<div class="breadcrumb">

<span><a href="<?php echo home_url(); ?>"><span>HOME</span></a> » </span>
<?php if($cat[$i]->parent != 0) { ?>

<span">
<a href="<?php echo get_category_link($cat[$i]->parent); ?>"><span><?php echo get_the_category_by_ID($cat[$i]->parent); ?></span></a> » </span>
<?php } ?>

<span>
<a href="<?php echo get_category_link($cat[$i]->term_id); ?>"><span><?php echo $cat[$i]->name ?></span></a> » </span>

<?php the_title(''); ?>

</div>

この2つを組み合わせる(シングル以外は上の、シングルは下のを使うとか)と、パンくずリストが「ホーム→親カテ→子カテ→自ページ」って表示になるかなと思います。あ、そういやタイトルもあった・・・・・

投稿日:2015年 05月 19日 | カテゴリー:WordPress関連

«