アイキャッチ画像(サムネイル画像)ではなくて、記事中の画像ということでしょうか。
それであれば、cURL、wp_remote_get、file_get_contents などで画像URLを取得してみて、リザルトコードが ‘200’ じゃなかったら
特定の画像を表示する、というような処理になると思います。
どうしても自前で処理を行いたい、というわけで無ければ、Broken Link Checker プラグインなどで、リンク切れを直していった方がお勧めしたいところではあります。
説明不足でしたね、すいません。
記事中の画像ではなく、ECサイトとかによくみられる各商品のカゴ横などに表示される複数枚の画像です。
フォルダに入れてある画像(たとえば品番が名前の画像)が無ければnoimage画像を表示する感じです。
画像が1枚のページもあれば4枚のページもあり、画像枚数が少ない場合見た目的によろしくないのでnoimage画像を表示させたいです。
<?php if (条件:imagesフォルダに品番.jpgがある場合) : ?>
<li><img src="http://example.com/images/品番.jpg"></li>
<?php else : ?>
<li><img src="http://example.com/images/noimage.jpg"></li>
<?php endif; ?>
<?php if (条件:imagesフォルダに品番-1.jpgがある場合) : ?>
<li><img src="http://example.com/images/品番-1.jpg"></li>
<?php else : ?>
<li><img src="http://example.com/images/noimage.jpg"></li>
<?php endif; ?>
.
.
.
上記の条件の書き方が分かりません。
もっとスマートに出来る方法があればさらに助かります。
<li><img src="http://example.com/images/<?php (条件:imagesフォルダに品番.jpgがある場合) ? '品番.jpg' : 'noimage.jpg'; ?>"></li>
という感じでしょうか。
もしかしたら存在チェックの方法も課題でしょうか。
個人的には、ファイル名を与えると存在チェックして、無かったら noimage.jpg を返すような関数かプラグインを作ってしまえば、記事側のソースはスッキリしそうな気がします。
poporonさんありがとうございます。
もしかしたら存在チェックの方法も課題でしょうか。
まさにその通りです…
存在チェックの仕方が分かりません(^_^;)
よろしくお願いします。
画像URLにアクセスして、「200 正常」以外、例えば「403 Not found」とかだったら、URLを画像が無い時用のものに差し替えて、imgタグを出力する感じで書いてみました。
$url = 'http://example.com/images/品番.jpg';
$result = wp_remote_get($url);
if (is_wp_error($result) || $result['response']['code'] <> 200) {
$url = 'http://example.com/images/noimage.jpg';
}
echo '<img src="'.$url.'">';
自サイト内の画像ならば、ローカルパスを取ってファイル名くっつけて file_exists() とかで存在チェックするのが効率が良いかと思いましたが、あんまり差は無いかも知れません。
このJavaScript、シンプルかつ汎用性が高くて良いですね!
poporonさん、nobitaさんお二人ともありがとうございました。
どちらの方法でもちゃんと表示できました。