WordPress

WordPressでプラグインなしに表示するパンくずリストから特定のカテゴリーの除外する方法

この記事は2012年10月に公開したものです(13年以上前)。当時の情報にもとづいており、現在の仕様とは異なる場合があります。

階層が深くなればなるほど、特定のカテゴリーをパンくずリストに出したくない、という場面が出てくるはず。
探しても探しても発見できなかったので、次困ったときのために。

まず、パンくずリストを表示させる方法から。
functions.phpに下記コードを追加します。
[php]

    ‘;
    // Add the Home link
    echo ‘

  • ホーム
  • ‘;

    if ( is_category() )
    {
    $catTitle = single_cat_title( “”, false );
    $cat = get_cat_ID( $catTitle );
    echo “

  • » “. get_category_parents( $cat, TRUE, ” » ” ) .”
  • “;
    }
    elseif ( is_archive() && !is_category() )
    {
    echo “

  • » アーカイブ
  • “;
    }
    elseif ( is_search() ) {

    echo “

  • » 検索結果
  • “;
    }
    elseif ( is_404() )
    {
    echo “

  • » 404 Not Found
  • “;
    }
    elseif ( is_single() )
    {
    $category = get_the_category();
    $category_id = get_cat_ID( $category[0]->cat_name );

    echo ‘

  • » ‘. get_category_parents( $category_id, TRUE, ” » ” );
    echo the_title(”,”, FALSE) .”
  • “;
    }
    elseif ( is_page() )
    {
    $post = $wp_query->get_queried_object();

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

    echo “

  • » “.the_title(”,”, FALSE).”
  • “;

    } 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 ‘

  • » ‘. strip_tags( apply_filters( ‘single_post_title’, get_the_title( $ancestor ) ) ) .’
  • ‘;
    } else {
    echo ‘

  • » ‘. strip_tags( apply_filters( ‘single_post_title’, get_the_title( $ancestor ) ) ) .’
  • ‘;
    }
    }
    }
    }

    // End the UL
    echo “

“;
}
}
?>
[/php]

下記のコードをパンくずリストを表示させたいテンプレートに書きます。
[php]

[/php]
参考サイトはこちら
http://blog.playunderworld.com/web/how-to-breadcrumbs-in-wordpress/

これだけだと、すべてのカテゴリーが表示されます。
しかし、特定のカテゴリーを表示したくない場合、どうするのか。
get_category_parentsを変更し、my_category_parentsという独自関数を作成します。

functions.phpに下記コードを追加します。
[php]
slug;
else
$name = $parent->name;

if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
$visited[] = $parent->parent;
$chain .= my_category_parents( $parent->parent, $link, $separator, $nicename, $visited );
}
if ( ! in_array( $parent->term_id, array( 除外したいカテゴリーのID ) ) ) {
if ( $link )
$chain .= ‘http://ja.forums.wordpress.org/topic/6214

先に書いた、パンくずリストを表示する get_breadcrumbs のコードの中の get_category_parents を my_get_category_parents に変更します。
これで特定のカテゴリーの除外したパンくずリストが実現します。

ウェブサイトの制作・改善や、社内の困りごとのご相談を承っています。

相談してみる