サポート » プラグイン » カスタムフィールドテンプレート「[cft] and [cftsearch] Shortcode Format 」にPHPを書く場合

  • 解決済 usagitoissho3

    (@usagitoissho3)


    カスタムフィールドテンプレートに関して分からないことがあります。
    (PHPやワードプレスに関してはあまり知識がありません。)

    TEMPLATE #0 の「テンプレートコンテンツ」内に、
    ————————–
    [アイテム名]
    type = textfield
    size = 35

    [品番]
    type = textfield
    size = 35

    [価格]
    type = textfield
    label = \
    size = 20
    ————————–
    と書いて、

    「[cft] and [cftsearch] Shortcode Format」の中に下記のソース、
    ————————–
    <table>
    <tr>
    <td>[アイテム名]</td>
    <td>[品番]</td>
    <td><?php $custom_fields = get_post_meta( $post->ID , ‘価格’ , true ); if(empty( $custom_fields ) === false){ ?>価格登録なし<?php } else { ?>¥<?php echo post_custom(‘価格’);?><?php } ?></td>
    </tr>
    </table>
    ————————–

    を書いて、「PHPを使用する」にチェックを入れました。

    そして、内容を表示させたいPHPファイル内に、
    ————————–
    <?php echo do_shortcode(‘[cft format=0]’) ?>
    ————————–

    と書きました。

    これで、アイテム名・品番は管理画面から登録した内容が表示されて希望どおりなのですが、
    価格については、管理画面で価格登録した際、(¥<?php echo post_custom(‘価格’);?>の箇所)が出るのはいいのですが、
    未入力にした場合は「価格登録なし」と表示されることを期待していたら、
    「¥」だけが表示されてしまいます。
    (「¥<?php echo post_custom(‘価格’);?>」の、<?php echo post_custom(‘価格’);?>を省いた「¥」が表示されるのかと思います)

    条件分岐がうまくいってないようなのですが、間違いが分かりません。。

    詳しい方いらっしゃいましたら、ご教示いただけましたら幸いです。
    どうぞよろしくお願いいたします。

    • このトピックはusagitoissho3が6年、 1ヶ月前に変更しました。
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック投稿者 usagitoissho3

    (@usagitoissho3)

    ▼訂正

    <?php $ctm = get_post_meta($post->ID, ‘1行目左価格’, true);?><?php if(empty($ctm)):?><?php else:?>¥<?php echo post_custom(‘1行目左価格’);?><?php endif;?>

    のタグを、直接PHPファイル内に書くと、情報登録してたら表示され、してなかったら何も表示されず、意図したとおり(条件分岐がちゃんと動作します)ですが、同じソースを「[cft] and [cftsearch] Shortcode Format」の中に書くと、登録内容が無視されて何も表示されません。

    「[cft] and [cftsearch] Shortcode Format」の中に書く場合は、直接PHPファイルに書く場合とは別に、注意しないといけないことがあるのでしょうか。

    • この返信は6年、 1ヶ月前にusagitoissho3が編集しました。
    • この返信は6年、 1ヶ月前にusagitoissho3が編集しました。
    • この返信は6年、 1ヶ月前にusagitoissho3が編集しました。

    こんにちは

    「[cft] and [cftsearch] Shortcode Format」の PHP コードの評価は、グローバルスコープではないようなので、$post をグローバル宣言する必要があるようです。

    <?php global $post; $ctm =(省略)

    または

    $post->ID

    get_the_ID()

    • この返信は6年、 1ヶ月前にishitakaが編集しました。
    トピック投稿者 usagitoissho3

    (@usagitoissho3)

    思ったとおりにできました!
    ありがとうございます!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタムフィールドテンプレート「[cft] and [cftsearch] Shortcode Format 」にPHPを書く場合」には新たに返信することはできません。