Blog

【WordPress】親タームと子タームを表示

2016/07/01

カスタム投稿 Wordpress

備忘録です。

個人で運営中の「食!相模原」で地域カテゴリがあり、
町名のみだと例えば「相模原」の場合、駅名でも「相模原」があり
区別がしにくいため、
「相模原市中央区 相模原」のように表示できないかと思いカスタムをしました。

参考サイト
Display only parent category of a custom taxonomy

こちらを参考に

<?php if(get_the_terms($post->ID,'タクソノミー')){
$makemodel = wp_get_object_terms($post->ID, 'タクソノミー', array('orderby' => 'slug')); } ?>
<?php if(!empty($makemodel) && get_term_link($makemodel[0])){ ?>
<a href="<?php echo get_term_link($makemodel[0]); ?>"><?php echo $makemodel[0]->name; ?></a>
<?php } ?>&nbsp;
<?php single_cat_title();?>

としたところ「相模原市中央区 相模原」と表示されるようになりました。

しかし、親タームの場合「相模原市中央区 相模原市中央区」と表示されてしまうため、
下記サイトを参考にして条件分岐を入れました。

【コピぺOK】taxonomy.phpで子ターム名と一緒に親ターム名を表示する方法!

<?php if(is_tax('タクソノミー,array('親ターム1','親ターム2'))): ?>
<?php single_cat_title();?>
<?php else: ?>
<?php if(get_the_terms($post->ID,'タクソノミー')){
$makemodel = wp_get_object_terms($post->ID, 'shop_place', array('orderby' => 'slug')); } ?>
<?php if(!empty($makemodel) && get_term_link($makemodel[0])){ ?>
<a href="<?php echo get_term_link($makemodel[0]); ?>"><?php echo $makemodel[0]->name; ?></a>
<?php } ?>&nbsp;
<?php single_cat_title();?>
<?php endif; ?>

これで無事表示できました。

ちなみに上記の「【コピぺOK】~」のソースコードをそのままコピペしたところ、
子ターム一覧を表示するソースコードとの相性が悪くエラーが出てしまったため、
上記1サイトと上記2サイトの合わせ技にしました。

ひとつ問題があり、子ターム一覧の表示と並行して使う場合、
「相模原(0)」のようにデータが無い場合には子タームのみの表示となってしまいます。
データが無いタームを削除するか、
子タームを表示するソースコードに条件をつけるかして対応する必要がありそうです。



ゼヒトモ内でのプロフィール: ROCKSTREAMゼヒトモのホームページ作成・制作サービス仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ