サポート » 使い方全般 » アイキャッチがない時にデフォルトで画像を表示させたい

  • 独自テーマを使用しております。

    今、下層ページのヘッダー画像を

    
    <div id="mainkasou" style="background-image: url(<?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>
    

    上記コードで取得しておりますが、これに、
    「アイキャッチを登録していない時はこの画像をデフォルトで表示する」
    という設定をしたい時、どのようなコードを書けば実現しますでしょうか
    PHP勉強不足で分かりません、よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • get_post_thumbnail_id() は値がないとカラ文字を返すのですよね。
    しましたら文字長さがないとき strlen(get_post_thumbnail_id()) がゼロのときはデフォルトのIDを直接挿入するのはどうでしょうか。

    <?php
    if(strlen(get_post_thumbnail_id())>0){
    	//長さがあった場合 いままでどおり
    	echo wp_get_attachment_url( get_post_thumbnail_id() );
    }else{
    	//長さがなかった場合 デフォルトのファイルID
    	echo wp_get_attachment_url( 0000 );
    }
    ?>
    

    ちょっと長いですが表示されるときは改行は表示されませんし、一行にしていただいても動くと思います。
    見た目上スリムにしたいときは関数化するのもありだと思います。

    この部分を
    <?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>

    これに変えて
    <?php echo icatch_fnc( get_post_thumbnail_id() ); ?>

    これをどこかに入れます。

    
    <?php
    function icatch_fnc($targetID){
    	if(strlen($targetID)>0){
    		//長さがあった場合 いままでどおり
    		return wp_get_attachment_url( $targetID );
    	}else{
    		//長さがなかった場合 デフォルトのファイルID
    		return wp_get_attachment_url( 0000 );
    	}
    }
    ?>

    いかがでしょうか。

    こんにちは、

    単に、htmlのレベルでもできますよ

    https://tenman.info/labo/css/?p=4708

    Honda

    (@rocketmartue)

    アイキャッチ画像の有無で条件分岐する場合は、has_post_thumbnail関数を使います。

    デフォルト画像をテーマファイル内 images フォルダ内の default.jpg に設定する場合
    style="background-image: url(<?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>"
    の部分を
    style="background-image: url(<?php echo $bg_image; ?>)"
    に変更して

    // アイキャッチ画像が有る時
    if( has_post_thumbnail() ){
        $bg_image = wp_get_attachment_url( get_post_thumbnail_id() );
    // アイキャッチ画像が無い時
    }else{
        $bg_image = get_theme_file_uri( 'images/default.jpg' );
    }

    とすることで、アイキャッチ画像が有る時、無い時で画像の出し分けができます。

    <?php
    if( has_post_thumbnail() ){
        $bg_image = wp_get_attachment_url( get_post_thumbnail_id() );
    }else{
        $bg_image = get_theme_file_uri( 'images/default.jpg' );
    }
    ?>
    <div id="mainkasou" style="background-image: url(<?php echo $bg_image; ?>)" >
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「アイキャッチがない時にデフォルトで画像を表示させたい」には新たに返信することはできません。