• よろしくお願いいたします。
    WordPress 4.2.2を使っています。
    記事の一枚目の画像をリサイズしてアイキャッチにしたいのですが、
    下記記述でリサイズされません。
    不備な点がわかられる方、ご教授よろしくお願いいたします。

    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”;
    }else{
    //サイズをリサイズ
    $final_image = image_resize($first_img, 320, 320, true,”,”,100);
    //サーバー内のパスなので、ファイル名だけ取得
    $final_image = ‘/’.basename($final_image);
    }
    return $first_img;
    }

    表示場所に
    <img src=”<?php echo catch_that_image() ?>” />

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

    https://codex.wordpress.org/Function_Reference/image_resize

    は、ver3.5で、非推奨になっています。

    https://codex.wordpress.org/Class_Reference/WP_Image_Editor

    を使ってみてはどうでしょうか?

    最初の画像だけを取得するのであれば、preg_match_allを使わなくても、preg_matchだけで取得できると思いますので、

    その辺りを書き換えてみてどうでしょう

    トピック投稿者 sakupan

    (@sakupan)

    アドバイスありがとうございます。
    根本的な知識がないため、

    if ( ! is_wp_error( $image ) ) {
    $image->rotate( 90 );
    $image->resize( 300, 300, true );
    $image->save( ‘new_image.jpg’ );
    }

    のあたりを

    else{
    //サイズをリサイズ
    $final_image = image_resize($first_img, 320, 320, true,”,”,100);
    //サーバー内のパスなので、ファイル名だけ取得
    $final_image = ‘/’.basename($final_image);
    }
    return $first_img;
    }

    このあたりと入れ替えたりと、いろいろ試しては見たのですが、できませんでした。
    もうしわけございませんが、引き続きアドバイスいただけましたら幸いです。

    よろしくお願いいたします。

    私もできでときに、はまったりしたのですが
    アップするときに、各サイズを切り出し処理を行うみたいで

    一度、該当画像をアップしなおしてみてはいかがでしょうか

    ヒントになりますか?

    http://tenman.info/labo/snip/archives/2680

    4.2.2でうまく動くか確認しました。

    参考まで

    function test() {
    	$image = wp_get_image_editor( get_stylesheet_directory() . '/images/screen-shot-dark.png' );
    	if ( !is_wp_error( $image ) ) {
    		$image->rotate( 90 );
    		$image->resize( 300, 300, true );
    		$image->save( get_stylesheet_directory() . '/images/new_image.png' );
    
    		$html = '<img src="%1$s" width="300" />';
    
    		printf( $html, get_stylesheet_directory_uri() . '/images/new_image.png' );
    	} else {
    		echo '失敗す';
    	}
    }
    
    test();

    たぶん、画像を取得した時に得られるのは、画像のURLですよね、でも wp_get_image_editor()の引数には、パスを入れなければならないので、URLをパスに置換する工程を追加すればいいんじゃないかと思います。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事の一枚目の画像をリサイズしてアイキャッチに リサイズされません」には新たに返信することはできません。