回答:
答えはノーだと思われる ...
私はコア機能を追跡し、行き止まりを見つけました。そして、(この記事を見つけた私は、上からadd_image_size()作物を作ることができますどのように?)どこRarstは言います:
中間画像の生成は非常に厳格です。Image_resize()はコードに近い状態を保ち、フックを完全に欠いています。
しかし、他の回答(bradtからの)と彼が公開したコード(WordPressのImage Crop Position)に続いて、私はそれを理解したと思います:)
関数bt_generate_attachment_metadata
ではbt_image_make_intermediate_size
、最後のパラメーターを含めるように呼び出しを変更しました$size
$resized = bt_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'], $size );
また、関数の開始bt_image_make_intermediate_size
を次のように変更しました。
$size
関数にパラメーターを追加しましたnull
に価値$suffix
、switch
私たちの新しいサフィックスへfunction bt_image_make_intermediate_size( $file, $width, $height, $crop = false, $size ) {
if ( $width || $height ) {
switch($size) {
case 'thumbnail':
$suffix = 't';
break;
case 'medium':
$suffix = 'm';
break;
case 'large':
$suffix = 'l';
break;
default:
$suffix = null;
break;
}
$resized_file = bt_image_resize( $file, $width, $height, $crop, $suffix, null, 90 );
ここでは、参考のために、私のmodを含む完全なコードのコピーを示します。
そして、オリジナルとの違い。
多くの場合、すべてのコードは必要最低限にまで縮小できますが、この方法でカスタムのトリミングされた画像の利点を得ることができます:))
フィルターimage_make_intermediate_sizeを使用することもできますが、取得した$ filenameに従って、中間ファイルの名前を変更する必要があります(この時点ですでに生成されているため、ファイルの名前を変更します)。
「サムネイル」の中間サイズの画像のみを生成するので、次のように簡単です。
add_filter( 'image_make_intermediate_size', function( $filename ) {
// old 2017_234783843-100x100.jpg
$old = $filename;
// new 2017_234783843-thumbnail.jpg
$new = preg_replace("/(\d+_\d+)-\d+x\d+\.(.*)/i", "$1-thumbnail.$2", $old );
rename($old, $new);
return $new;
} );
"/(.*)-\d+x\d+\.(.*)/i"