カスタムフィールドの表示・非表示を条件分岐させる

カスタムフィールドはWPによるサイト制作に欠かせない機能ですが、必ずしも値が入っているとは限らないケースがあります。

たとえば物販サイトの商品ページで割り引き価格のあるものは「今なら割引価格:○○円」を表示させ、ない場合は値だけでなく「今なら割引価格:  円」という表示そのものもさせたくない場合は、if(get_post_meta()) を使います。

上記の例で、フィールド名が「discount」だとすれば、

<?php if(get_post_meta( $post->ID, 'discount', true )): ?>
    <p>今なら割引価格:<?php echo post_custom( 'discount' ); ?>円</p>
<?php endif; ?>

となります。

get_post_meta() というテンプレートタグは、特定の投稿と特定のキーからカスタムフィールドの値を取得するもので、第一引数で投稿IDを取得、第二引数でフィールド名を指定します。第三引数はtrueかfalseを入れます。trueの場合は文字列として単一の結果を返し、falseの場合はカスタムフィールドの配列を返します・・・すいません、初心者ゆえ第三引数の違いがいまひとつピンときませんが、基本trueでいいようです(苦笑)

CMS的な追加方をする場合は、カスタムフィールドの値が必ず入れられるとは限らない用途が多いと思いますので、ぜひ覚えておきたいコードです。

2 Comments

  1. おかげですっごく助かりました。
    簡単でわかりやすかったです。

    ありがとうございました。

    • Toshi

      2013年10月2日 at 12:12 PM

      ろろんさんコメントありがとうございました。
      ずっとほったらかしのサイトですが(^^;、お役に立てて何よりです。

      そろそろまた記事追加しようかと思ってますので、よかったらまたいつか覗きに来てください(^^)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です