Не знаем как вы, но нас всегда расстраивало то, что новые размеры изображений, добавленные с помощью функции 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).
Итак, читаем как сделать из такого:
![default_image_sizes_media_uploader_web[1]](https://wpincode.com/wp-content/uploads/2013/12/default_image_sizes_media_uploader_web1.png)
Такое
![add_image_sizes_media_uploader_web[1]](https://wpincode.com/wp-content/uploads/2013/12/add_image_sizes_media_uploader_web1.png)
Сам код..
Как мы и упоминали выше, можно использовать новый фильтр 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.
