カスタムフィールドテンプレート / 値が一致したら画像表示
-
お世話になります。
カスタムフィールドテンプレートで
チェックボックスを選んだ値だけ画像表示したいのですが、
うまくいきません…。もう少し詳しく言いますと、
1つのキー対して、5つの値があります。
それらを表(テーブルとか)にして
選んだ値の箇所だけ画像を表示したいのです。どなたか教えていただけないでしょうか。
よろしくお願い致します。環境は、mac、ブラウザはfirefox、wordpressのバージョンは、3.3.1です。
よろしくお願い致します。
-
ここは誰かにプログラムの作成を依頼するところではありません。うまく行っていないコードを投稿してください。そうすれば、問題点を誰かが指摘してくれるでしょう。
返信遅くなりすいません。
またおっしゃるとおりです。
申し訳リありませんでした。改めまして、
カスタムフィールドで投稿して
single.phpに表を作成します。チェックボックスで5つの項目の中から選んだ箇所に
○×の画像を表示するというものです。
(チェックしたら○、しなかったら×を表示します)現在、「チェックしたら○の画像を表示し、しなければ何も表示しない」
ということは上手くいっております。
以下は、5項目の内の一つのコードです。
※以下、やること2〜やること5まで続きます。<?php
$hoges = (array)post_custom(‘チェックリスト’);
foreach ($hoges as $hoge) {
switch ($hoge) {
case ‘やること1’:
echo “<img src=’maru.jpg’ />\n”;
break;
}
}
?>この状態から、チェックしたら○、しなかったら×を表示したいのですが、
以下のコードで上手くいきません。
具体的には、一つの項目に○と×の両方が表示されてしまいます。<?php
$hoges = (array)post_custom(‘チェックリスト’);
foreach ($hoges as $hoge) {
switch ($hoge) {
case ‘やること1’:
echo “<img src=’maru.jpg’ />\n”;
break;
default:
echo “<img src=’batu.jpg’ />\n”;
}
}
?>どなたか教えて頂けないでしょうか。
よろしくお願い致します。問題ないように見えますが、var_dump($hoges)して確認してみてはいかがでしょうか。
あと、post_custom()はキーに対する値が0件であればfalse、1件であれば文字列、2件以上であれば配列が返ってくるので、arrayにキャストしてらっしゃいますが、使いにくいです。get_post_metaであれば第3引数で返り値を文字列に強制できるので、扱い易いです。hissy様
お返事遅くなりました。
教えて頂きありがとうございます!教えて頂いたvar_dump($hoges)は
やりかたがわからないので
色々調べながら今やっております。get_post_metaについて試していたのですが、
以下のような感じでしょうか?
結果としてはなにも表示されないようです。
間違っているところを教えて頂けないでしょうか?<?php
$hoges = get_post_meta($post->ID,”チェックリスト”,true);
foreach ($hoges as $hoge) {
switch ($hoge) {
case ‘やること1’:
echo “<img src=’maru.jpg’ />\n”;
break;
default:
echo “<img src=’batu.jpg’ />\n”;
}
}
?>お忙しいところ申し訳ありませんがよろしくお願いします。
get_post_metaで第3引数でにtrueを渡した際は、上に書いた通り文字列が返ってきますので、foreach文は使えません。if文を使ってください。
お返事、ありがとうございます。
以下で試してみましたら、
elseの×の画像は表示されましたが、
値が入っているところで○が表示されません。
(全部×になってしまう)<?php
$hoge = get_post_custom($post->ID,”チェックリスト”,true);
if($hoge == ‘やること1’) :
echo “<img src=’maru.jpg’ />\n”;
else :
echo “<img src=’batu.jpg’ />\n”;
endif;
?>何度も申し訳ないですが、
教えて頂けないでしょうか?んん?そもそも、このコード、どのテンプレートのどの場所に入れてますか?
コード自体は合っていると思いますので、$post->ID
で表示しているページのIDが取得できていないのではないかと思います。一番無難な書き方は、while ( have_posts() ) : the_post();
と
endwhile; endif;
の間で、
$hoge = get_post_custom(get_the_ID(),"チェックリスト",true);
と書く方法です。
ありがとうございます!
何度もすいません。上手くいきませんでした…。
while ( have_posts() ) : the_post();
と
endwhile; endif;
の間にも入っているようです。hissy様のご指摘で気付いたのですが、
実は、他の項目ございまして、
画像の値があれば投稿された画像を表示、
なければ仮の画像を表示というのを
以下のようにして上手くいっております。<?php if (get_post_meta($post->ID,’画像’,true)): ?>
<?php echo wp_get_attachment_link(get_post_meta($post->ID,”画像”,true),’medium’); ?>
<?php else : ?>
<img src=”no-image.jpg”>
<?php endif; ?>これを活用して、これに加えて「値が等しい時は…」を指定したら
いけるかと思いました。いただいたコードなども含め参考にさせて頂き、
<?php if (get_post_meta($post->ID,’チェックリスト’,true)== ‘やること1’) : ?>
<?php echo “<img src=’maru.jpg’ />\n”; ?>
<?php else : ?>
<img src=”batu.jpg”>
<?php endif; ?>としましたが、×の場合の画像しか表示されません。
このコードはどのあたりがおかしいでしょうか。何度もすいません、よろしくお願い致します。
これで試してください
$meta_value = get_post_meta($post->ID,'チェックリスト',true); var_dump($meta_value);
ありがとうございます!
こういうことでしょうか?
真っ白になってしまうのですが…。
どこがおかしいでしょうか?
何度も申し訳ありません。<?php $list1 = get_post_meta($post->ID,’チェックリスト’,true);
var_dump($list1 == ‘やること1’);
echo “<img src=’maru.jpg’ />\n”; ?>
<?php else : ?>
<img src=”batu.jpg”>
<?php endif; ?>$meta_value = get_post_meta($post->ID,'チェックリスト',true); var_dump($meta_value);
このコードをif文の前にそのまま貼り付けて、get_post_metaで目的の値が正しく取れているか確認してください。
早速、ありがとうございます。
やってみましたら、プレビュー画面で
該当の部分でstring(0)と出ました。これは値を取得できていないということでしょうか?
何度もありがとうございます。
すいませんがよろしくお願い致します。少なくとも「やること1」とは入っていないですね。編集画面で、カスタムフィールド「チェックリスト」に何が保存されているか確認してください。
ありがとうございます。
編集画面で見てみましたが、
「やること1」にチェックして保存されています…。以下のように試してみたのですが、「チェックリスト」という項目に
何か値があればということなら、<?php if (get_post_meta($post->ID,’チェックリスト’,true)) : ?>
<?php echo “<img src=’maru.jpg’ />\n”; ?>
<?php else : ?>
<img src=”batu.jpg”>
<?php endif; ?>○は表示されますが、
<?php if (get_post_meta($post->ID,’チェックリスト’,true) == ‘やること1’) : ?>
<?php echo “<img src=’maru.jpg’ />\n”; ?>
<?php else : ?>
<img src=”batu.jpg”>
<?php endif; ?>1行目のような値の指定の仕方では取得されません。
値の取得の仕方は他にあるのでしょうか?本当に何度も申し訳ないです。
宜しくお願いします。「やること1」にチェックして保存されています…。
という表現がよくわからないのですが、カスタムフィールドテンプレートなど、カスタムフィールドの入力を補佐するプラグインを入れてらっしゃいますか?
とにかく、カスタムフィールドに”実際に”どんなデータが保存されているのかが分からないと、対処のしようがありません。お手数ですが、次のコードで、投稿に関連付けられたすべてのカスタムフィールドの値を確認してもらえますか?
$custom_fields = get_post_custom(); var_dump($custom_fields);
- トピック「カスタムフィールドテンプレート / 値が一致したら画像表示」には新たに返信することはできません。