WordPressでパンクズ・・・。そしてつまづく。

    どうも GGです。

    この前Wordpressで作られているサイトのパンクズ改修で
    躓いたのでまたメモがてら残しておきます。

    大カテゴリと小カテゴリ(A,B,C,D,E,F)が6つあるカテゴリ
    で出来ているサイトになり子カテゴリAのページを開いたら
    パンクズが「サイトTOP/大カテゴリ/子カテゴリA」となればOK。

    色々事前にサイトでも調べていたので楽勝!
    ・・・・・と思いきや。

    小カテゴリC,小カテゴリE,小カテゴリFの時だけ
    パンクズが「サイトTOP/小カテゴリ/ページ詳細」と並びは問題ない。※1
    しかし「小カテゴリ」の文言が「大カテゴリ」の文言になります。

    これではダメです。

    ほかのA、B、D、は問題ありません。

    WordPressのカテゴリIDをみましたがバラバラのIDが振られている事確認しました。

    結局の所原因は
    カテゴリの名前にありました。
    小カテゴリC,E,Fはカテゴリ名が配列上、
    大カテゴリより後に来てしまう事が原因でした。

    WordPressは英数字、平仮名50音、漢字50音での順番で並びます。
    大カテゴリ(idは1)はその名称上小カテゴリC,E,Fより順番的に前に来てしまいます。

    なので表示が「サイトTOP/大カテゴリ/ページ詳細」となってしまう様です。

    そうさせない為に大カテゴリ(id=1、name=大カテゴリ)が来たら
    書き換える処理を書きました。

     

    ★php

    <?php
    $cat = get_the_category(); // 情報取得
    $catId = $cat[0]->cat_ID; // ID取得
    $catName = $cat[0]->name; // 名称取得
    $catSlug = $cat[0]->category_nicename; // スラッグ取得

    if( $catId == 1){ // 入ってくるカテゴリIDが1だったら
    $catId = $cat[1]->cat_ID; // ID1以外の該当ページのidに置き換える
    $catName = $cat[1]->name; // 名前を置き換える
    }
    $link = get_category_link($catId); // リンクURL取得
    ?>
    ★HTML
    <!-- パンクズ -->
    <ul class="breadcrumb">
    <li><a href="/">vitalify.jp</a></li>
    <li><!--?php echo $catName; ?--></li>
    <li><!--?php the_title(); ?--></li>
    </ul>
    <!-- /パンクズ -->

    上記で無事解決!

    カテゴリの取得など基礎的な部分は以下を参考にしました!
    http://wpdocs.osdn.jp/

    ではでは。

    ※1:サイトの性質上、意図してと大カテゴリを外しています。