Добавить небольшой размер изображения в настройки медиа

Вопрос или проблема

Настройки медиа на моем сайте 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 или в приватный плагин, чтобы он не был потерян в случае изменения темы.

  1. Добавьте размер изображения, используя ваши настраиваемые значения параметров и размеры по умолчанию в качестве запасных значений.
    add_action('init', function() {
        add_image_size('your_size', (int) get_option('your_size_w', 240), (int) get_option('your_size_h', 240));
    });
    
  2. Присоединитесь к фильтру image_size_names_choose, чтобы сделать ваш размер выбираемым в различных контекстах редактирования содержимого.
    add_filter('image_size_names_choose', function($sizes) {
        return $sizes + [
            'your_size' => 'Ваш размер',
        ];
    });
    
  3. (части 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. Правильная настройка размеров изображений поможет обеспечить оптимальную скорость загрузки страниц и улучшить пользовательский опыт. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...