Есть ли фильтр для установки соглашения об именах этих автоматически сгенерированных миниатюр?
Что-то вроде этого:
- thumbnail_150x150.jpg -> thumbnail-s.jpg
- thumbnail_300x300.jpg -> thumbnail-m.jpg
- thumbnail_600x600.jpg -> thumbnail-l.jpg
источник
Есть ли фильтр для установки соглашения об именах этих автоматически сгенерированных миниатюр?
Что-то вроде этого:
Кажется, что ответ нет ...
Я следил за основными функциями и нашел тупик. И нашел этот пост ( Как я могу сделать обрезку add_image_size () сверху? ), Где Rarst говорит:
Промежуточная генерация изображения очень жесткая. Image_resize () держит его близко к коду и полностью лишен хуков.
Но , следуя указаниям другого ответа (от Брэдта ) и опубликованному им коду ( Image Crop Position in WordPress ), я думаю, что получил его :)
В функции 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 );
Здесь копия полного кода с моими модами, просто для справки.
И разница с оригиналом .
Скорее всего, весь код можно сжать до гола, но таким образом мы получаем выгоду от пользовательских обрезанных изображений :))
Вы можете использовать фильтр image_make_intermediate_size , но вам придется выяснить, на какое имя вы хотите изменить промежуточный файл, в соответствии с $ filename, который вы получите (а затем переименовать файл, потому что на данный момент он уже создан).
Я создаю только промежуточный размер изображения для «миниатюры», так что это так просто:
источник
"/(.*)-\d+x\d+\.(.*)/i"