自動生成されたサムネイルの命名規則を設定するために利用できるフィルタはありますか?
このようなもの:
答えが いいえ ...であることをSeems.
私はコア機能を追跡し、行き止まりを見つけました。そしてこの記事を見つけました( 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
パラメータを追加しました$suffix
へのデフォルトのnull
値の代わりに、新しい接尾辞への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;
} );