どうも 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:サイトの性質上、意図してと大カテゴリを外しています。