Не знаем как вы, но нас всегда расстраивало то, что новые размеры изображений, добавленные с помощью функции add_image_size(), автоматически не отображаются в медиа загрузчике после того, как изображение было загружено, так что невозможно просто так его взять и вставить (нужного размера) в запись.
Также для этого существуют несколько плагинов, который добавляют подобный функционал, которого нет в ядре WordPress.
Но, благодаря новому фильтру image_size_names_choose, добавленному в функцию image_size_input_fields() в wp-admin/includes/media.php, добавление дополнительных размеров изображений в медиа загрузчик теперь совсем не сложное.
Этот код работает в версиях WordPress 3.5+ но, конечно же, медиа загрузчик WP 3.5 использует выпадающий список вместо радио-кнопок как на скриншоте ниже (было в версии WP 3.3).
Итак, читаем как сделать из такого:
Такое
Сам код..
Как мы и упоминали выше, можно использовать новый фильтр image_size_names_choose filter для доступа к массиву, содержащему стандартные размеры изображений, и добавления дополнительного размера изображений к ним.
Добавьте следующий код в файл functions.php вашей темы:
/** * Filter callback to add image sizes to Media Uploader * * WP 3.3 beta adds a new filter 'image_size_names_choose' to * the list of image sizes which are displayed in the Media Uploader * after an image has been uploaded. * * See image_size_input_fields() in wp-admin/includes/media.php * * Tested with WP 3.3 beta 1 * * @uses get_intermediate_image_sizes() * * @param $sizes, array of default image sizes (associative array) * @return $new_sizes, array of all image sizes (associative array) * @author Ade Walker http://www.studiograsshopper.ch */ function sgr_display_image_size_names_muploader( $sizes ) { $new_sizes = array(); $added_sizes = get_intermediate_image_sizes(); // $added_sizes - индексированный массив. поэтому необходимо конвертировать его // в ассоциативный массив, используя $value для $key и $value foreach( $added_sizes as $key => $value) { $new_sizes[$value] = $value; } // Сохраняем метки в $sizes, и объединяем два массива $new_sizes = array_merge( $new_sizes, $sizes ); return $new_sizes; } add_filter('image_size_names_choose', 'sgr_display_image_size_names_muploader', 11, 1);
Некоторая полезная информация…
- Строка 18: Параметр $sizes, который передается функции, является массивом, содержащим дефолтные размеры изображений:
array( 'thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size') );
Это все находится в ассоциативном массиве.
- Строка 22: Функция get_intermediate_image_sizes() используется для получения списка всех размеров изображений, которые были зарегистрированы функцией add_image_size() при установке WordPress, или же темой или плагинами. Список содержит стандартные размеры изображений (за исключением ‘Full’ (‘Оригинальный’)) и содержится в виде индексированного массива, выглядит примерно так:
'0' => 'thumbnail', '1' => 'medium', '2' => 'large', '3' => 'special-added-image-size', '4' => 'some-other-added-image-size', etc
- Строка 26: Цикл перебирает массив $added_sizes и создает новый массив с именем $new_sizes, который объединяется потом с оригинальным $sizes для генерации итогового результата.
Надеемся, что статья вам помогла с отображением всех размеров изображений в медиа загрузчике WordPress.