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 );
}
}
?>
いかがでしょうか。
アイキャッチ画像の有無で条件分岐する場合は、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; ?>)" >