サポート » 使い方全般 » 記事中一番最初の画像を自動表示するが画像なしの時はHTML非表示にしたい

  • 解決済 wakawaka67

    (@wakawaka67)


    「WordPressで記事中の一番最初の画像を自動で表示するが、画像がない時は、前後のHTML自体を非表示にしたい。」

    いろいろな方のサイトを参考にしまして、

    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/default.jpg”;
    }
    return $first_img;
    }

    と記述し、

    その後、

    設定したい箇所に

    <div class=”box”> <img src=”<?php echo catch_that_image(); ?>” width=”120″ alt=”” class=”imgR” /></div>

    などという感じで設置しました。

    上のfunction.phpだとない場合は、default.jpg画像を表示するという形になっていますが、
    これを、

    画像が有る場合は、
    <div class=”box”> <img src=”<?php echo catch_that_image(); ?>” width=”120″ alt=”” class=”imgR” /></div>
    を採用し、
    記事自体に画像が存在しない場合には、
    <div class=”box”> <img src=”<?php echo catch_that_image(); ?>” width=”120″ alt=”” class=”imgR” /></div>
    これ自体を表示しないようにすることは可能でしょうか?

    条件分岐でできないかなと思うのですが、

    なかなか成功せずアドバイスいただけると助かります。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    wakawaka67さん、こんにちは。

    いろいろと苦労の形跡があるコードだったので、ちょっと見直しも含めてみました。preg_match_allの正規表現ももう少し厳密化できると思いますが、通常用途では問題ないと思い、そのまま利用することにしています。

    function catch_that_image() {
    	global $post;
    
    	if ( preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches) ) {
    		$first_img = $matches[1][0];
    	} else {
    		$first_img = false;
    	}
    	return $first_img;
    }

    テンプレートでの記述は、下記で。

    <?php if ( $first_image = catch_that_image() ) : ?>
    <div class="box">
    	<img src="<?php echo do_shortcode( $first_image ); ?>" width="120" alt="" class="imgR" />
    </div>
    <?php endif; ?>
    モデレーター jim912

    (@jim912)

    すみません。

    テンプレートの記述の方、普通は、do_shortcodeはいらないですw

    <?php if ( $first_image = catch_that_image() ) : ?>
    <div class="box">
    	<img src="<?php echo $first_image; ?>" width="120" alt="" class="imgR" />
    </div>
    <?php endif; ?>

    jim912さん、お早い回答ありがとうございました!

    上記の方法で試してみたところ、うまくいきました!!(^^)

    アイキャッチ画像で対応させないとかなと思っていたので助かりました。

    本当にどうもありがとうございました。

    jim912さん、訂正ありがとうございました。

    訂正した方でもうまく出力できました。

    本当にありがとうございました!!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事中一番最初の画像を自動表示するが画像なしの時はHTML非表示にしたい」には新たに返信することはできません。