WordPressでカスタムフィールドを表示させたいとき、どのページにも表示させるのであれば問題ありませんが、表示させるページを選びたい場合もあります。
そんなときに使える「カスタムフィールドが入力されているかどうか」で条件分岐する方法をご紹介します。
カスタムフィールドが空だった場合と入力されていた場合の条件分岐
カスタムフィールドの値を表示させたい箇所に下記のソースのように記述してください。
1行目や6行目に書いてある「custom_field_name」というところを表示させたいカスタムフィールドの名前に置き換えてください。
<?php $customfield = get_post_meta($post->ID, 'custom_field_name', true); ?> <?php if( empty($customfield) ): ?> カスタムフィールドが空だった場合にここが表示される <?php else: ?> カスタムフィールドの値が入力されていたらここに表示される <?php echo esc_html( $post->custom_field_name ); ?> <?php endif; ?>
カスタムフィールドが空だった場合になにも表示させたくなければ空欄にしておいてください。空のときに表示させたいものがあればそれを書きましょう。
上記の書き方をすると「custom_field_name」というカスタムフィールドの値が入力されていたらその値がそのまま表示されます。
割と自由に書けるので、カスタムフィールドの値を出力する、上記コードの6行目をHTMLタグで囲っておいても良いと思います。
文章の中に入れるとしたらpタグで囲ったり、divやspanで囲ってclass名を付けてCSSで装飾しても良いですし。
実例として「カスタムフィールドが空だったら何も表示させず、値が入力されていたらpタグで囲って出力する」ならこういう感じです。
<?php $customfield = get_post_meta($post->ID, 'custom_field_name', true); ?> <?php if( empty($customfield) ): ?> <?php else: ?> <p><?php echo esc_html( $post->custom_field_name ); ?></p> <?php endif; ?>
最後に
広告の出し分けなどに活用できるかなと思います。
ちなみに僕がやろうとしたのはheadタグ内に表示させているmeta description用の記述を文章内に反映させようと思ったんですが、結局文字数の関係で断念しました…。リード文の文字数が少ない方はうまくハマりそうな気がしますね。