電子書籍の厳選無料作品が豊富!

カスタムフィールドテンプレートに関して分からないことがあります。
(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 if(get_post_meta($post->ID, '価格', true)): ?>¥<?php $price = get_post_meta($post->ID, '価格', true); ?><?php endif; ?></td>
</tr>
</table>
--------------------------

を書いて、「PHPを使用する」にチェックを入れました。
そして、内容を表示させたいPHPファイル内に、
--------------------------
<?php echo do_shortcode('[cft format=0]') ?>
--------------------------

と書きましたところ、アイテム名・品番は管理画面から登録した内容が表示されるのですが、価格(PHPのif文の箇所)が表示されません。
ほか、PHPを使っている箇所は全部表示されません。

「PHPを使用する」にチェックを入れているのですが、この場合はダメなのでしょうか。

「価格」の部分を表示させたいのですが、どんな方法がありますでしょうか。

詳しい方いらっしゃいましたら、どうぞよろしくお願いいたします。

A 回答 (2件)

「価格」が入力されていたら「\(円マーク)価格」として「価格」が入力されていなければ「 」(円マークを表示しない?)ということですかね。



「[cft] and [cftsearch] Shortcode Format」の中を以下のようなコードでどうでしょう。

<table>
<tr>
<td>[アイテム名]</td>
<td>[品番]</td>
<td><?php $price = get_post_meta( get_the_ID(), '価格', true ); if( $price ) { echo '&yen;'; } ?>[価格]</td>
</tr>
</table>

それと、
<?php echo do_shortcode('[cft format=0]') ?>

最後に ;(セミコロン)が必要だと思います。

<?php echo do_shortcode('[cft format=0]'); ?>

参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございます!
そういうことがしたいです><

いただいたソースを入れてみたら、&yen;のとこはそのまま表示されてしまったのですが、表示・非表示については意図した表示になりました!

ちなみに、この「価格」のところを「リンク」にして同様に使いたい場合なんですが、
([価格] => [リンク])

[リンク]の内容が登録されているときは、
<a href="http://goo.ne.jp/[リンク]"><img src="img/icon.gif"></a>

と表示し、登録がないときは何も表示されないようにしたいです。
その場合はどう書いたらいいのでしょうか。

<?php $link = get_post_meta( get_the_ID(), 'リンク', true ); if( $link ) { echo '<a href="http://goo.ne.jp/[リンク]"><img src="img/icon.gif"></a>'; } ?>
だと×と思うのですが、、、
また意味がわからなかったらすみません。

どうぞよろしくお願いいたします。

お礼日時:2018/02/28 13:46

><?php if(get_post_meta($post->ID, '価格', true)): ?>¥<?php $price = get_post_meta($post->ID, '価格', true); ?><?php endif; ?>



これって条件分岐させているにもかかわらず、どちらにしろ[価格]を呼び出しているように見えるし、それを、表示させるようには書いていないような気がします。

>ほか、PHPを使っている箇所は全部表示されません

どう書いているかわからないので……。

どうされたいのかいまひとつわかりません。補足があればなにか手助けができるかもしれません。

参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございます。

カスタムフィールドテンプレートで、内容が登録されている場合は表示し、ない場合は表示しないということをしたいです。

上記ソースを、PHPファイルに直接書いた場合は思ったように表示されるのですが、
管理画面の「[cft] and [cftsearch] Shortcode Format」の中に上記ソースを書いて、
<?php echo do_shortcode('[cft format=0]') ?>で呼び出しした場合は、表示されません。

><?php if(get_post_meta($post->ID, '価格', true)): ?>¥<?php $price = get_post_meta($post->ID, '価格', true); ?><?php endif; ?>

この箇所の条件分岐がおかしいとのことで、

https://zxcvbnmnbvcxz.com/wp-custum-fields/index …
のページを参考にして、
-----------------------------------------
<?php $price = get_post_meta($post->ID, '価格', true);?><?php if(empty($price)):?><?php else:?><?php echo post_custom('価格');?><?php endif;?>
-----------------------------------------
のように書き換えてみたのですが、この場合も、直接PHPファイルに書いたら表示されるのですが、管理画面に登録してcftで呼び出した場合は表示されませんでした。

ワードプレスのタグとPHPのタグがよくわからないのもあって、どうやって質問していいのかわからないのですみません。

また、
>ほか、PHPを使っている箇所は全部表示されません
と書いたのですが、すみません、訂正です。
「<?php echo get_the_date(); ?>」など、日付のタグ部分は表示されていました。

お礼日時:2018/02/26 14:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!