サポート » プラグイン » Toolset Types カスタムフィールドの入力があるかないかの判別

  • 解決済 spz77jp

    (@spz77jp)


    こんにちは。よろしくお願いいたします。
    Toolset Typesを使用してカスタムフィールドを作成しています。
    このカスタムフィールドに値があるかないかで表示の仕方を変えたいと思っています。
    調べると以下のような感じで動作するとのことでした。
    確かに、indexページでは動作しているのですが、これを固定ページなどのテンプレート内で記述すると、正しく分岐できておらず、すべてAAAAが表示されます。
    こちらどのようにしたら動作するでしょうか。
    ご教授いただければ幸いです。宜しくお願いします。

    <?php $link = get_post_meta($post->ID, ‘wpcf-link’, true);?>
    <?php if(empty($link)):?>
    AAAA
    <?php else:?>
    “>BBBB
    <?php endif;?>

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • コードをcodeボタンで囲って再投稿してください。

    トピック投稿者 spz77jp

    (@spz77jp)

    ご返信ありがとうございます。
    すいません。なんか変になっていました。

    
    <?php $link = get_post_meta($post->ID, 'wpcf-link', true);?>
    <?php if(empty($link)):?>
    AAAA
    <?php else:?>
    BBBB
    <?php endif;?>

    こちらで大丈夫でしょうか??宜しくお願いします。

    Toolset Typesというプラグインを使ったことが無いので詳細は分かりませんが、固定ページでカスタムフィールドが使えるようになっているんでしょうか?

    <?php if(empty($link)):?>
    この場合カスタムフィールドが空だとAAAになり、空でなければBBBになります。

    <?php if(!empty($link)):?>
    emptyに!を付けるとカスタムフィールドが空ではない場合はAAAになり、空だとBBBになります。

    なので恐らく固定ページでカスタムフィールドが使われておらず、その為wpcf-linkに値が無いのでAAAになる、が正しいのでしょうか。

    とすると

    <?php $link = get_post_meta($post->ID, 'wpcf-link', true);?>
    <?php if(!empty($link)):?>
    AAAA
    <?php else:?>
    BBBB
    <?php endif;?>

    これが正しいように思いますが、回りくどいというか、固定ページでカスタムフィールドを使ってなければBBBだけ出してれば良いような…

    トピック投稿者 spz77jp

    (@spz77jp)

    ご返信ありがとうございます。
    値がない場合はリンクごと出さないようにと以下のようにしたく。。
    現状このようにすると、すべてリンクが表示され、値がないものは空のリンクになります。
    値が入ってるのものはリンクするので、カスタムフィールドは使えてると思っているのですが。。

    <?php $amazon = get_post_meta($post->ID, 'wpcf-amazon', true);?>
    <?php if(empty($amazon)):?>
    <a class="btn1" href="<?php echo post_custom('wpcf-amazon'); ?>" target="_blank">AMAZON</a>
    <?php else:?>
    <?php endif;?>

    先に書いていますが、値の有無を判定するのに!で使い分けます。

    emptyだと空の場合
    !emptyだと空ではない場合
    詳しくは http://php.net/manual/ja/function.empty.php を見てください。

    で、カスタムフィールドに入力があればリンクを出す場合

    <?php $amazon = get_post_meta($post->ID, 'wpcf-amazon', true);?>
    <?php if(!empty($amazon)):?>
    <a class="btn1" href="<?php echo post_custom('wpcf-amazon'); ?>" target="_blank">AMAZON</a>
    <?php endif;?>

    これだけで良いです。未入力の場合は何もしません。

    トピック投稿者 spz77jp

    (@spz77jp)

    ご返信ありがとうございます。
    あ、すいません。ちょっと私の書き方もおかしかったです。

    <?php $amazon = get_post_meta($post->ID, 'wpcf-amazon', true);?>
    <?php if(!empty($amazon)):?>
    <a class="btn1" href="<?php echo post_custom('wpcf-amazon'); ?>" target="_blank">AMAZON</a>
    <?php endif;?>

    このようにご教授いただいたような書き方をした場合だと、すべて非表示になってしまうのです。。
    いろいろといじっているうちに以下だと動くようになりました。

    <?php $amazon = get_post_meta( get_the_ID(), 'wpcf-amazon', true ); ?>
    <?php if($amazon == ''):?>
    <?php else:?>
    <a class="btn1" href="<?php echo post_custom('wpcf-amazon'); ?>" target="_blank">AMAZON</a>
    <?php endif;?>

    なぜ動かなかったのかはわからないままなんですが。。。。

    トピック投稿者 spz77jp

    (@spz77jp)

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

    空、の意味が違うみたいですね

    empty :存在しない
    ” :フィールドは存在するが値がない

    の差ですね。
    フィールドを設定している/していない、フィールドを作成したが消去したのは値だけ、という差は判別できない現状が把握いただけると幸いです。

    • この返信は6年、 8ヶ月前にmsioが編集しました。理由: 日本語へんでした。
8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「Toolset Types カスタムフィールドの入力があるかないかの判別」には新たに返信することはできません。