• 解決済 chatm

    (@chatm)


    投稿記事の1枚目の画像を取得してサムネイル画像として、カテゴリーページに一覧にしていますが、function.phpに掲載した、画像がない場合に表示するnoimage画像が表示されません。
    (ソースでは「$first_img = $matches [1][0];」のところがエラーになっているらしいのですが)
    絶対座標にしても表示されません(画像だけのURLを打ち込むと表示されますが、組み込むと表示されません)。原因が分からず困っています。教えて頂けると助かります。

    // 投稿画像の1枚目の画像をサムネイルとして出力する。ない場合はnoimage.pngを出力
    
    function catch_that_image() {
        global $post, $posts;
        $first_img = '';
        ob_start();
        ob_end_clean();
        $output = preg_match( '/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]+\>/i', $post->post_content, $matches );
    	$first_img = $matches [1][0];
     
        if(empty($first_img)){ //Defines a default image
            $first_img = esc_url(get_template_directory_uri()) . "/images/noimage.png";
        }
    return $first_img;
    }
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • chatmさん、こんにちは。

    投稿記事の1枚目の画像を取得してサムネイル画像として、カテゴリーページに一覧にしていますが、function.phpに掲載した、画像がない場合に表示するnoimage画像が表示されません。

    んー、間違っていたらごめんなさい。そもそも preg_match で img タグを探しているようですけども、$first_img = $matches [1][0];ここで画像が存在していなければ $matches [1][0] は配列として空で存在しなくないですか。
    先に $matches [1][0] が存在するかどうかを調べないとここでエラーがでる気がするのですが…エラーコードは存在しないとかになっていませんかね…

    ご参考になれば。

    トピック投稿者 chatm

    (@chatm)

    できました!本当にためになります。ありがとうございました!
    出来上がったコードです。

    // サムネイル画像 / 投稿画像の1枚目の画像をサムネイルとして出力する。ない場合はnoimage.pngを出力
    
    function catch_that_image() {
        global $post, $posts;
        $first_img = '';
        ob_start();
        ob_end_clean();
        if (preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches)){
            $first_img = $matches [1] [0];
        }else{
            $first_img = get_stylesheet_directory_uri().'/images/noimage.png';
        }
    return $first_img;
    }
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「投稿記事の1枚目を表示でnoimageの画像が出ない」には新たに返信することはできません。