サポート » 使い方全般 » 指定画像が無い場合noimage画像を表示

  • 解決済 nashigon

    (@nashigon)


    指定URLに画像が無ければnoimage画像を表示するif文を書きたいのですが、条件の書き方が分かりません。
    調べてみてもサムネイルが無い時の分岐例文ばかりで困ってます。

    <?php if (条件:指定URLに画像がある場合) : ?>
    <img src="指定URLの画像">
    <?php else : ?>
    <img src="noimage画像のURL">
    <?php endif; ?>

    たとえば上のように書きたいのですが…どういう風に条件を書けばいいのか分かりません。
    とても初歩的な質問だと思いますが宜しくお願いします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • アイキャッチ画像(サムネイル画像)ではなくて、記事中の画像ということでしょうか。

    それであれば、cURL、wp_remote_get、file_get_contents などで画像URLを取得してみて、リザルトコードが ‘200’ じゃなかったら
    特定の画像を表示する、というような処理になると思います。

    どうしても自前で処理を行いたい、というわけで無ければ、Broken Link Checker プラグインなどで、リンク切れを直していった方がお勧めしたいところではあります。

    トピック投稿者 nashigon

    (@nashigon)

    説明不足でしたね、すいません。
    記事中の画像ではなく、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 を返すような関数かプラグインを作ってしまえば、記事側のソースはスッキリしそうな気がします。

    トピック投稿者 nashigon

    (@nashigon)

    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でもできるようです。

    http://stackoverflow.com/questions/92720/jquery-javascript-to-replace-broken-images

    実際にテストしたものが、以下です。

    http://tenman.info/labo/css/?p=1056

    このJavaScript、シンプルかつ汎用性が高くて良いですね!

    トピック投稿者 nashigon

    (@nashigon)

    poporonさん、nobitaさんお二人ともありがとうございました。
    どちらの方法でもちゃんと表示できました。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「指定画像が無い場合noimage画像を表示」には新たに返信することはできません。