ショウジンブログ on Hatena

“お芝居をしないと、この社会では異邦人として扱われるほかない”

タグの有無を判別する条件文@WordPress

WordPressでは、カテゴリは何かしら必須で割り当てられますが(デフォルトだと未分類が)、タグは任意です。

投稿によってはタグがある場合、ない場合もあるかもしれません。(必ずつけるという運用ルールでカバーするのもひとつですが)

以下のコードはタグの有無を判別して出力を出し分ける条件文です。

<?php if(has_tag()==true) : ?>
<li>タグ:<?php the_tags(”,’, ‘); ?></li>
<?php else : ?>
// タグがない場合の処理。何もしないなら、↑の1行を消してOK。
<?php endif; ?>

投稿日、カテゴリ名も表示するようにした、ループに組み込んで使う場合の例は以下になります。

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div class="post">
        <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
        <ul class="optional">
            <li class="date">Published: <?php echo get_post_time('M jS, Y'); ?></li>
            <li class="category">Category: <?php the_category(', '); ?></li>
            <?php if(has_tag() == true) : ?>
                <li class="tags">Tags: <?php the_tags('', ', ', ''); ?></li>
            <?php else : ?>
                // タグがない場合の処理。何もしないなら、↑の1行を消してOK。
            <?php endif; ?>
        </ul>
    <!-- / .post --></div>
<?php endwhile; ?>
<?php else: ?>
    <div class="post">
        <h2>記事がありません</h2>
    <!-- / .post --></div>
<?php endif; ?>

ブラウザで確認するとこうなります。一番上の投稿がタグ無しの場合ですね。タグの行(li要素)が他の二つと違って出力されていません。

このようにしておけば、タグが設定されていない場合に見出しに「Tags: 」だけ表示されて、タグ自体はないということにならず、スマートかなと思います。

f:id:showjinx:20160528172918p:plain