サポート » 使い方全般 » カスタムフィールドテンプレートでフィールドに値が入っていない場合

  • 解決済 nagaib

    (@nagaib)


    カスタムフィールドテンプレートを使用して、写真や本文、会場、参加費、定員、料金、申込み方法…などの項目があるイベント情報を作ろうとしています。

    フィールドに値が入っていない時はつめて表示させたいと思っていますが、各項目下に仕切りのドット線を入れたいので下記のように記述すると、値が入ってなくてもスペースとドット線で表示されてしまいます。

    <div class=”dot”>
    <?php echo get_post_meta($post->ID,”会場”,true); ?>
    </div>
    <div class=”dot”>
    <?php echo get_post_meta($post->ID,”参加費”,true); ?>
    </div>
    <div class=”dot”>
    <?php echo get_post_meta($post->ID,”定員”,true); ?>
    </div>

    ~~~ スタイルシート ~~~~~~~~~~~~~~~~

    .dot {
    width: 500px;
    border-bottom:1px dotted #C8C8C8;
    padding-bottom: 15px;
    }

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    (例)参加費のフィールドに値が入っていない場合

    (現在)

    会場
    ——————–

    ——————–
    定員
    ——————–

    会場
    ——————–
    定員
    ——————–

    と表示させたいです。

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~

    どなたかお力をかして頂けると幸いです。
    どうぞ宜しくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • #未検証

    $keys = array( '会場', '参加費', '定員' );
    foreach ( $keys as $key ) {
      $val = get_post_meta( $post->ID, $key,true );
      if ( '' != $val ) {
        printf(
          '<div class="dot">%s</div>',
          $val
        );
      }
    }

    でどうでしょう。

    ご回答ありがとうございます。

    上記を記述をしたところ、
    $keys = array・・・・とそのまま全文記述内容が表示されてしまい、うまくいかないようです。
    もしかして前後の記述が間違っているからでしょうか?

    全体の記述も付け加えてみました。
    それから、会場:と表記したいので今回はフィールド名も付け足しました。

    会場: 広場
    —————————
    参加費: 500円
    —————————
    定員: 10人
    —————————

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~

    <?php if(have_posts()):
    while(have_posts()): the_post(); ?>

    <div class=”sentry”>
    <?php if ( get_post_meta($post->ID,’会場’,true ) ) { ?> 会場 : <?php echo get_post_meta($post->ID,’会場’,true); ?> <?php } ?>
    </div>
    <div class=”sentry”>
    <?php if ( get_post_meta($post->ID,’参加費’,true ) ) { ?> 参加費 : <?php echo get_post_meta($post->ID,’参加費’,true); ?> <?php } ?>
    </div>
    <div class=”sentry”>
    <?php if ( get_post_meta($post->ID,’定員’,true ) ) { ?> 定員 : <?php echo get_post_meta($post->ID,’定員’,true); ?> <?php } ?>
    </div>

    <?php endwhile; endif; ?>

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    お力をかして頂けると嬉しいです。

    よろしくお願いいたします。

    nagaibさん自身の返信で記述しているように、以下の構文で<div class=”dot”>を丸ごと囲ってしまえばフィールドに値が入っている時のみ表示されるようになると思います。

    <?php if ( get_post_meta($post->ID,'カスタムフィールド名',true ) ) { ?>
      <div class="dot">
        <?php echo get_post_meta($post->ID,"会場",true); ?>
      </div>
    <?php } ?>

    t.okuboさん

    ご回答ありがとうございます。

    無事に希望通りの動きを実現できました。一人では実現できなかったと思います。
    お力をお貸しいただき本当にありがとうございました。

    こちらのコメントを持ちまして「解決済み」とさせていただきます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタムフィールドテンプレートでフィールドに値が入っていない場合」には新たに返信することはできません。