サイズのまちまちな画像を、同じサイズに切り抜きします。

サムネイルのサイズをfunction.phpに追記

「function.php」

// サムネイルのサイズ設定
add_image_size( 'small-feature', 300, 300, true );

trueにすると縮小時に切り抜きを行います。
名前を下記にすれば、デフォルトの設定を上書きできます。
画像サイズを縦横0にすれば、そのサイズの画像は作成されません。

  • ‘thumbnail’ //サムネイル (デフォルト 150px x 150px)
  • ‘medium’ //中サイズ (デフォルト 300px x 300px)
  • ‘large’ //大サイズ (デフォルト 640px x 640px)

切り抜き位置を指定

「function.php」

// サムネイルの切り抜き位置を「画像の一番上、左右中央」に設定
function my_awesome_image_resize_dimensions( $payload, $orig_w, $orig_h, $dest_w, $dest_h, $crop ){
    if( false ) return $payload;

    if ( $crop ) {
        $aspect_ratio = $orig_w / $orig_h;
        $new_w = min($dest_w, $orig_w);
        $new_h = min($dest_h, $orig_h);

        if ( !$new_w ) {
            $new_w = intval($new_h * $aspect_ratio);
        }
        if ( !$new_h ) {
            $new_h = intval($new_w / $aspect_ratio);
        }

        $size_ratio = max($new_w / $orig_w, $new_h / $orig_h);
        $crop_w = round($new_w / $size_ratio);
        $crop_h = round($new_h / $size_ratio);

        $s_x = floor( ($orig_w - $crop_w) / 2 );
        $s_y = 0;
    } else {
        $crop_w = $orig_w;
        $crop_h = $orig_h;

        $s_x = floor( ($orig_w - $crop_w) / 2 );
        $s_y = 0;

        list( $new_w, $new_h ) = wp_constrain_dimensions( $orig_w, $orig_h, $dest_w, $dest_h );
    }

    if ( $new_w >= $orig_w && $new_h >= $orig_h )
        return false;
    return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h );
}
add_filter( 'image_resize_dimensions', 'my_awesome_image_resize_dimensions', 10, 6 );

プラグインでサムネイルを作り直し、不要なサイズを削除

投稿済みのサムネイルのサイズを変えるためにプラグイン『Force Regenerate Thumbnails』を使用します。
『ツール』>『Force Regenerate Thumbnails』>『Regenerate All Thumbnails』

※『Regenerate Thumbnails』では、古い画像サイズは削除できないので注意。
ただし、削除したくない場合は『Regenerate Thumbnails』を使用する。

切り抜き位置の実験

このような画像を切り抜いてみます。
切り抜き位置の実験

指定300×300に対して、600×200の場合
600x200の場合

指定300×300に対して、200×600の場合
200x600の場合

指定サイズより画像が小さいと、正方形に切り抜かれないようです。

参考記事