サポート » プラグイン » custom field suite の簡易チェックボックスで条件分岐するには?

  • いつも大変お世話になっております。

    custom field suite プラグインで簡易チェックボックス 値aaa を設定し、
    チェックを入れた時のみ表示される項目と、未チェックの時のみ表示される項目で条件分岐を設定したいのですが、
    なかなかうまく行かずに悩んでおります。

    下記の2パターン試してみたのですが、どちらも「空の時」の値が表示されて
    チェックを入れていてもうまく動きません。

    試したコード1

    <?php $ctm = get_post_meta($post->ID, 'aaa', true);?>
    <?php if(empty($ctm)):?>
    
    空の時
    
    <?php else : ?>
    
    値がある時
    
    <?php endif; ?>

    試したコード2

    <?php if ( get_post_meta($post->ID,'aaa',TRUE) ): ?> 
    
    値があるとき
    
    <?php else : ?>
    
    値がないとき
    
    <?php endif; ?>

    どのように記述するとうまくいくでしょうか。

    お手数おかけしますが、是非お知恵をお貸しください。
    どうぞよろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    以下、3点確認してみてください。

    • 試したコードは、どのファイルに記述しましたか
    • 次のコードを endif; の次の行に書き足して、何が表示されるか教えてください
      
      <?php var_dump( $post->ID, get_post_meta($post->ID,'aaa',TRUE) ); ?>
      
    • 上記のコードで $post->ID の内容が数値であった場合、その数値はチェックを入れた投稿のIDと同じでしょうか
    トピック投稿者 conte9999

    (@conte9999)

    jim912様、ご教授ありがとうございます。

    >次のコードを endif; の次の行に書き足して、何が表示されるか教えてください

    NULL bool(false)

    と表示されます。

    >試したコードは、どのファイルに記述しましたか

    こちら、aaa.php内に記述して、

    固定ページ内に
    [myphp file=’aaa’]のように記述して表示させていました。
    aaa.phpの中に下記のようなループ部分を作ってその中に記述しています。

    カテゴリーID2の投稿を一覧表示。
    カテゴリーID2に該当する投稿ページの中にカスタムフィールドaaaを設定しています。

    <?php
        $wp_query = new WP_Query();
        $param = array(
            'order' => 'ASC',
            'orderby' => 'date', //date=更新日順に並び替え
            'cat' => '2',
            'showposts' => '12',
            'offset' => '1',
        );
        $wp_query->query($param);
        if($wp_query->have_posts()): while($wp_query->have_posts()) : $wp_query->the_post();
    ?>
    
    表示内容
    
    <?php endwhile; endif; ?>

    お手数おかけしますが、引き続きよろしくお願いします。

    モデレーター jim912

    (@jim912)

    >次のコードを endif; の次の行に書き足して、何が表示されるか教えてください

    NULL bool(false)

    おわかりかと思いますが、投稿のIDが指定できていないために、カスタムフィールドの値も正しく取得できていません。

    $post->ID で投稿のIDが取得できないには、変数 $post が関数内のローカル変数となっているためかと思われます。
    テンプレートなどで記述されている $post は、グローバル変数を参照していますので、aaa.php の冒頭で

    
    global $post;
    

    を追記していただき、$post がグローバル変数として扱われるようにしてください。

    参考:PHP: 変数のスコープ – Manual

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「custom field suite の簡易チェックボックスで条件分岐するには?」には新たに返信することはできません。