• 解決済 chatm

    (@chatm)


    オリジナルのテーマでwpを作成しています。
    投稿画像の1枚目の画像を取得して、サムネイルとして出力する方法で、
    wordpress本来のギャラリー機能で作ったギャラリーの1枚目を出力したいのですが、
    どうしてもギャラリーの最後の画像が表示されてしまいます。
    ソース表示にして確認すると、ギャラリーの画像のIDの91を取得している感じです。
    wp:gallery {"ids":[93,80,82,83,92,91],"linkTo":"media"}

    画像を登録する順番でしょうか、ギャラリー画像のIDが変更できれば、1に反応するかもしれない感じですが。何か解決方法があれば教えて頂けると助かります。

    設定している投稿画像の1枚目を取得するものは下記を設定しています。
    function.phpに

    function catch_that_image() {
        global $post, $posts;
        $first_img = '';
        ob_start();
        ob_end_clean();
        $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
        $first_img = $matches [1] [0];
     
        if(empty($first_img)){ //Defines a default image
            $first_img = "/images/noimage.png";
        }
    return $first_img;
    }

    出力したいカテゴリー.phpのページに下記を記入

    <ul>
    <li><a href="<?php the_permalink(); ?>"><img src="<?php echo catch_that_image(); ?>" ></a>
    <p class="wp-caption"><?php the_title(); //記事のタイトル ?></p>
    </li>
    </ul>

    宜しくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    下記の正規表現ではどうでしょうか?

    /<img.+src=[\'"]([^\'"]+)[\'"].*>/i

    /<img[^>]+src=[\'"](.+?)[\'"].*>/i

    トピック投稿者 chatm

    (@chatm)

    教えて頂きましてありがとうございます。
    試してみましたが、すみません変わりませんでした。
    ギャラリーの設定で、メディアファイルからギャラリーの並び方を変更して、(現在、6枚の画像を横並び3列2段に配置しているのですが)2段目の右下に置いた画像が、どうも表示されるようです。
    他のページでは、投稿の1枚目を表示させたいので、ギャラリーを使うページだけ、右下に位置する画像を、表示させたい画像にすればいいかな、妥協だけど・・・とも思います。
    もしくは、ギャラリーをやめて、テーブル的な何か枠を作ってcssでobject-fit: cover;で画像をトリミングして並べaddQuicktagでクラシックブロックにして入れるか、という妥協策を考え始めました。

    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
    $first_img = $matches [1] [0];

    $output = preg_match( '/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]+\>/i', $post->post_content, $matches );
    $first_img = $matches[1];

    ではどうでしょうか?

    トピック投稿者 chatm

    (@chatm)

    できました!ありがとうございます!
    しかも、他の投稿記事ページの(ギャラリーでない)投稿写真が何枚か並んでるものも、1枚目を取得してくれました。ご面倒みて頂きましてありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「wpギャラリー画像の1枚目を取得したい」には新たに返信することはできません。