Вопрос или проблема
Настройки медиа на моем сайте WordPress (v4.7) показывают только размеры для Миниатюры, Среднего и Большого. Как добавить Малый размер?
Вы можете зарегистрировать новый размер изображения, используя add_image_size()
add_image_size( string $name, int $width, int $height, bool|array $crop = false )
Параметры
$name
(строка) (Обязательный) Идентификатор размера изображения.
$width
(int) (Обязательный) Ширина изображения в пикселях. $height (int) (Обязательный) Высота изображения в пикселях.
$crop
(bool|array) (Необязательный) Нужно ли обрезать изображения до заданной ширины и высоты или изменять размер. Массив может указать позиционирование области обрезки. Значение по умолчанию: false
Перед изменением тем, вам следует создать дочернюю тему своей темы
https://codex.wordpress.org/Child_Themes
Затем вы можете добавить одну из следующих опций в свой functions.php
в дочерней теме
add_image_size( 'custom-size', 220, 180 );
Обратитесь к этой странице для опций обрезки и изменения размера
https://developer.wordpress.org/reference/functions/add_image_size/https://developer.wordpress.org/reference/functions/add_image_size/
Чтобы использовать добавление изображения в файле functions.php темы. Всегда используйте хук действия “after_setup_theme”.
add_action( 'after_setup_theme', 'wpdocs_theme_setup' );
function wpdocs_theme_setup() {
add_image_size( 'category-thumb', 300 ); // 300 пикселей в ширину (и неограниченная высота)
add_image_size( 'homepage-thumb', 220, 180, true ); // (обрезано)
}
Или вы также можете использовать функцию set_post_thumbnail_size
с некоторыми из перечисленных ниже опций
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 150, 150 );
Примечание
Эта функция не изменит размер ваших существующих миниатюр. Чтобы регенерировать существующие изображения в новом размере, используйте плагин Regenerate Thumbnails.
Режим обрезки
Установите размер миниатюр по умолчанию, изменяя размер изображения пропорционально (т. е. без искажения):
set_post_thumbnail_size( 50, 50 ); // 50 пикселей в ширину и 50 пикселей в высоту, режим изменения размера
Установите размер миниатюр по умолчанию, обрезая изображение (либо с боков, либо сверху и снизу):
set_post_thumbnail_size( 50, 50, true ); // 50 пикселей в ширину и 50 пикселей в высоту, режим обрезки
Установите размер миниатюр по умолчанию, обрезая изображение с верхнего левого угла:
set_post_thumbnail_size( 50, 50, array( 'left', 'top') ); // 50 пикселей в ширину и 50 пикселей в высоту, обрезка из верхнего левого угла
Установите размер миниатюр по умолчанию, обрезая изображение из центра:
set_post_thumbnail_size( 50, 50, array( 'center', 'center') ); // 50 пикселей в ширину и 50 пикселей в высоту, обрезка из центра
Более полное решение общей проблемы, связанной с желанием получить пользовательский размер изображения, состоит из 4 основных частей.
Если вас устраивают жестко закодированные значения, как в других ответах, то выполните только первые две части (без использования get_option()
).
Вы можете добавить код в ваш (дочерний) файл functions.php
или в приватный плагин, чтобы он не был потерян в случае изменения темы.
- Добавьте размер изображения, используя ваши настраиваемые значения параметров и размеры по умолчанию в качестве запасных значений.
add_action('init', function() { add_image_size('your_size', (int) get_option('your_size_w', 240), (int) get_option('your_size_h', 240)); });
- Присоединитесь к фильтру
image_size_names_choose
, чтобы сделать ваш размер выбираемым в различных контекстах редактирования содержимого.add_filter('image_size_names_choose', function($sizes) { return $sizes + [ 'your_size' => 'Ваш размер', ]; });
- (части 3 и 4) Сделайте эти размеры редактируемыми на странице Настройки медиа, присоединившись к хуку
admin_init
и используя иadd_settings_field()
, иregister_setting()
, с'media'
в качестве значений для параметров$page
и$option_group
соответственно.
Обратитесь к коду для значений по умолчанию вwp-admin/options-media.php
, чтобы увидеть ожидаемый вывод от вашегоadd_settings_field()
.
Преобразование в целое число должно быть достаточным вsanitize_callback
.add_action('admin_init', function() { add_settings_field( 'your_size', 'Ваш размер', function() { ?><fieldset><legend class="screen-reader-text"><span>Ваш размер</span></legend> <label for="your_size_w"><?php _e( 'Максимальная ширина' ); ?></label> <input name="your_size_w" type="number" step="1" min="0" id="your_size_w" value="<?php form_option( 'your_size_w' ); ?>" class="small-text" /> <br /> <label for="your_size_h"><?php _e( 'Максимальная высота' ); ?></label> <input name="your_size_h" type="number" step="1" min="0" id="your_size_h" value="<?php form_option( 'your_size_h' ); ?>" class="small-text" /> </fieldset><?php }, 'media', ); foreach (['your_size_w', 'your_size_h'] as $opt) { register_setting('media', $opt, [ 'sanitize_callback' => function($value) { return (int) $value; }, ]); } });
Это упрощенный пример. Вам может потребоваться несколько размеров или некоторые с обрезкой для выровненных макетов (например, сетки изображений).
Обратите внимание, что если вы измените какие-либо размеры на этой странице настроек, вы, вероятно, захотите запустить массовую генерацию размеров изображений, для чего WP CLI имеет команду.
Ответ или решение
Для добавления нового размера изображений, например "Маленький", в настройки медиа в WordPress 4.7, вам потребуется внести изменения в файл functions.php
вашей темы. Настройка размера подразумевает использование функции add_image_size()
, которая позволяет регистрировать пользовательские размеры изображений. Давайте рассмотрим этот процесс более подробно.
Шаг 1: Создание дочерней темы
Перед внесением изменений в темы рекомендуется создать дочернюю тему, чтобы избежать потери настроек при обновлении основной темы. Для этого вы можете следовать официальной документации WordPress по дочерним темам.
Шаг 2: Регистрация нового размера изображения
Чтобы создать новый размер изображения "Маленький", вам нужно добавить следующий код в файл functions.php
дочерней темы:
add_action('after_setup_theme', 'custom_theme_setup');
function custom_theme_setup() {
add_image_size('small-size', 150, 150, true); // 150 пикселей в ширину, 150 пикселей в высоту, режим обрезки
}
В данном примере 'small-size'
— это идентификатор нового размера, а ширина и высота указаны в пикселях. Последний параметр true
указывает на то, что изображение будет обрезано до заданных размеров.
Шаг 3: Обновление настроек размеров изображений
Чтобы новый размер появлялся в редакторах контента, вам нужно добавить фильтр image_size_names_choose
в тот же файл functions.php
:
add_filter('image_size_names_choose', 'custom_image_sizes_names');
function custom_image_sizes_names($sizes) {
return array_merge($sizes, array(
'small-size' => __('Small Size'), // 'Small Size' — название для вашего размера
));
}
Это сделает новый размер доступным в выпадающем списке выбора размеров при редактировании изображений.
Шаг 4: Добавление настроек в панель администратора
Для того чтобы размеры были редактируемыми прямо в настройках медиа, вы можете добавить следующий код. Это связано с использованием admin_init
и функциями add_settings_field()
и register_setting()
:
add_action('admin_init', function() {
add_settings_field(
'small_size',
'Маленький Размер',
function() {
?>
<fieldset>
<legend class="screen-reader-text"><span>Маленький Размер</span></legend>
<label for="small_size_w"><?php _e('Максимальная ширина'); ?></label>
<input name="small_size_w" type="number" step="1" min="0" id="small_size_w" value="<?php echo get_option('small_size_w', 150); ?>" class="small-text" />
<br />
<label for="small_size_h"><?php _e('Максимальная высота'); ?></label>
<input name="small_size_h" type="number" step="1" min="0" id="small_size_h" value="<?php echo get_option('small_size_h', 150); ?>" class="small-text" />
</fieldset>
<?php
},
'media'
);
foreach (['small_size_w', 'small_size_h'] as $opt) {
register_setting('media', $opt, [
'sanitize_callback' => 'absint',
]);
}
});
Этот код создаст поля в настройках медиа, где вы сможете указать максимальные размеры для вашего нового размера изображения.
Шаг 5: Генерация миниатюр для уже загруженных изображений
Имейте в виду, что изменения не отразятся на ранее загруженных изображениях. Для применения нового размера к существующим медиафайлам вы можете использовать плагин "Regenerate Thumbnails". Он позволит пересоздать все миниатюры, применяя новые размеры ко всем загруженным файлам.
Заключение
С помощью приведённых выше шагов вы сможете добавить новый размер изображения "Маленький" в настройки медиа вашего сайта на WordPress версии 4.7. Правильная настройка размеров изображений поможет обеспечить оптимальную скорость загрузки страниц и улучшить пользовательский опыт. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться за поддержкой.