【WordPress】所属する記事のタームをスラッグのclass付きで表示する方法

55
Wordpress

こんにちは。先日、お台場でメキシコのフェスティバルがあり、メキシコの伝統音楽などを演奏してきました。メキシコ人の陽気さと情熱からはすごいパワーを感じますね。メキシコから本場のバンドが来日して僕たちの後に演奏していたのですが、涙が出そうなくらい感動しました。世界には知らない面白さがたくさんありますね。

WordPressのカスタム投稿で所属する記事のタームをclass付きで表示する

それでは今回は、カスタム投稿で記事を投稿した際にスラッグをclass名にしたタームを表示する方法です。方法はいたって簡単です。

通常のターム表示(get_the_terms)

記事に属するタームを表示するには、専用の関数が用意されていますので、そちらを使用するようになります。

例)
【タクソノミー】()内はスラッグ
くだもの(fruit)

【ターム】()内はスラッグ
・りんご(apple)
・バナナ(banana)
・ぶどう(grape


<ul>
<?php echo get_the_terms( $post->ID, 'fruit' ); ?>
</ul>

これにより表示されるHTMLは、


<ul>
    
<li>
        <a href="http://www.sample.com/fruit/apple/">りんご</a>
    </li>

    
<li>
        <a href="http://www.sample.com/fruit/banana/">バナナ</a>
    </li>

    
<li>
        <a href="http://www.sample.com/fruit/grape/">ぶどう</a>
    </li>

</ul>

となります。
しかし、表示されるターム毎にcssで調整したい場合はclass名を付与したいところです。

タームのスラッグをclass名として付与する

それでは本題のタームのスラッグをclass名として付与する方法です。上記の例を使用すると下記のようなコードで実現できます。


<ul>
<?php $terms = get_the_terms( $post->ID, 'fruit' );
if ($terms && ! is_wp_error($terms)): ?>
    <?php foreach($terms as $term): ?>
    
<li class="<?php echo $term->slug; ?>">
        <a href="<?php echo get_term_link( $term->slug, 'fruit'); ?>">
            <?php echo $term->name; ?>
        </a>
     </li>

    <?php endforeach; ?>
<?php endif; ?>
</ul>

これにより表示されるHTMLは、


<ul>
    
<li class="apple">
        <a href="http://www.sample.com/fruit/apple/">りんご</a>
    </li>

    
<li class="banana">
        <a href="http://www.sample.com/fruit/banana/">バナナ</a>
    </li>

    
<li class="grape">
        <a href="http://www.sample.com/fruit/grape/">ぶどう</a>
    </li>

</ul>

となります。便利ですよね。

まとめ

方法はこの他にもあるようですので、参考の一つにして頂ければ幸いです。ではでは。

※カスタマイズの際は、必ずバックアップを取ってからお試しください。また、カスタマイズによって動作に問題が生じた場合、当方では責任を負いかねますのでご了承ください。
まだまだ勉強中の身ですのでカスタマイズ方法が正しくない場合があるかもしれません。もしご指摘を頂ければすぐに修正させて頂きます。今後ともご指導・ご鞭撻の程、よろしくお願い致します。