サポート » 使い方全般 » ”アイキャッチ画像が設定してあるかないか”のif文

  • 解決済 sasasa24

    (@sasasa24)


    WordPressのカスタム投稿のシングルページにて
    アイキャッチ画像が設定してれば、その画像を表示。
    なければno_image.pngを表示、と言う風にしたく、以下のコードを書きました。

    <?php
    	for ($i = 2 ; $i < 16 ; $i++) {
    		$ctm = get_post_meta($post->ID, 'img_0'.$i, true);
    		if(has_post_thumbnail($ctm)):
    		echo '<li>';
    		echo '<div class="img_wrapper"><img src=" ';
    		echo wp_get_attachment_url(get_post_meta($post->ID, 'img_0'.$i,true));
    		echo ' "></div>';
    		echo '</li>';
     ?>
    <?php else:
    		echo '<li>';
    		echo '<div class="img_wrapper"><img src=" ';
    		echo 'no_image.png';
    		echo ' "></div>';
    		echo '</li>';
     ?>
    <?php endif;
    	}
    ?>

    が、画像が表示されません。。
    if文の書き方が間違っているのでしょうか?
    アイキャッチのありなし判断にはhas_post_thumbnailを使うことは分かったのですが、
    フォーラムのほかの回答を見て試行錯誤しましたが、どうしても上手くいきません。
    どなたかご教授いただけないでしょうか。
    宜しくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 参照しているカスタムフィールドの内容が分からないので推測ですが、もし、$ctmに投稿IDを取り出してそのアイキャッチ画像があればそれを表示、したいのであればget_the_post_thumbnailを利用します。

    (wp_get_attachment_urlはattachment(アップロードしたファイル)毎に割り当てられているIDからURLを取得)

    Hinaloe様

    回答ありがとうございます。
    まずそこが違ったのですね・・・ありがとうございます。

    おかげさまで、先ほど書いたコード部分は動いたのですが、
    下記の場合だと上手くいきません。。。
    アイキャッチ画像があってもそれが表示されずにNo Imageが表示されてしまいます。

    <div class="wrapper_thumb_rela js_img_centering">
    <div class="wrapper_thumb_ab">
    div class="wrapper_thumb_table">
    							<?php
    // アイキャッチ画像のIDを取得
    $thumbnail_id = get_post_thumbnail_id();
    // mediumサイズの画像内容を取得(引数にmediumをセット)
     $img_full = wp_get_attachment_image_src( $thumbnail_id , 'full' );
    								if(get_the_post_thumbnail($thumbnail_id)):
    echo '<div class="wrapper_thumb_ta_cell"><div class="img_wrapper"><img src="'.$img_full[0].'"></div></div>';
    ?>
    <?php else :
    echo '<div class="wrapper_thumb_ta_cell"><div class="img_wrapper"><img src="/wp-content/uploads/2015/12/no_image.png"></div></div>';
    ?>
    <?php endif;?>
    
    </div>
    </div>
    </div>

    こちらの場合はまた別のWPタグを使うのでしょうか??
    度々の質問で恐れ入りますが、宜しく御願い致します。

    ifの中はhas_post_thumbnail()ですよ?

    あと何故get_post_thumbnail_idを利用されてるのかよく分かりませんが、これについても先程同様、get_the_post_thumbnailでいいのでは?(サイズを指定する場合はget_the_post_thumbnail(0,'medium')のようにすればできます。)

    申し訳ありません。。
    修正途中のコードを載せてしまいました。

    <div class="wrapper_thumb_rela js_img_centering">
    <div class="wrapper_thumb_ab">
    <div class="wrapper_thumb_table">
    <?php
    // アイキャッチ画像のIDを取得
     $thumbnail_id = get_post_thumbnail_id();
    // mediumサイズの画像内容を取得(引数にmediumをセット)
    $img_full = wp_get_attachment_image_src( $thumbnail_id , 'full' );
    if(has_post_thumbnail()){
    echo '<div class="wrapper_thumb_ta_cell">
       <div class="img_wrapper"><img src="'.$img_full[0].'"></div></div>';
    }else{
    echo '<div class="wrapper_thumb_ta_cell"><div class="img_wrapper">
    <img src="/wp-content/uploads/2016/01/no_image.png"></div></div>';
    };
    ?>
    
    </div>
    </div>
    </div>

    こちらで希望通りの動きになりました。
    Hinaloe様、助けて頂いて本当にありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「”アイキャッチ画像が設定してあるかないか”のif文」には新たに返信することはできません。