image_downsize

Позволяет изменить вывод image_downsize()
Хук WordPress
INT 2.5.0
WordPress Icon
Содержание
  1. Описание хука
  2. Примеры использования
  3. Изменение размера изображения перед выводом
  4. Определение размера изображения для отображения в галерее
  5. Проверка доступных размеров изображений
  6. Определение размера изображения для использования в шаблоне
  7. Предотвращение изменения размера изображения
  8. Определение размера изображения для использования в виджете
  9. Вопросы и ответы
  10. Как изменить размер изображения с помощью хука image_downsize?
  11. Как получить ID вложения изображения в хуке image_downsize?
  12. Как получить запрошенный размер изображения в хуке image_downsize?
  13. Как изменить значение $downsize в хуке image_downsize?
  14. Как добавить новый зарегистрированный размер изображения в хуке image_downsize?
  15. Как проверить, является ли запрошенный размер изображения зарегистрированным в хуке image_downsize?
  16. Как обработать ошибку в хуке image_downsize, если запрошенный размер не существует?
  17. Как изменить порядок обработки хука image_downsize?
  18. Как отключить хук image_downsize для определенного изображения?
  19. Связанные элементы

Описание хука

Хук «image_downsize» позволяет изменить или определить размеры изображения перед его выводом.

Когда WordPress обрабатывает запрос на изменение размера изображения, он вызывает функцию «image_downsize». Хук «image_downsize» позволяет изменить или определить размеры изображения, которые будут использоваться для вывода.

При использовании хука можно изменить параметры изображения, такие как ширина, высота и качество, а также определить, следует ли использовать стандартные размеры изображений или создать новые.

Использование

apply_filters( 'image_downsize', bool|array $downsize, int $id, string|int[] $size )

В данном примере кода применяется фильтр «image_downsize», который позволяет изменить или определить размеры изображения.

$downsize — логическое значение или массив. Определяет, следует ли использовать стандартные размеры изображений или создать новые.

$id — идентификатор вложения для изображения.

$size — запрошенный размер изображения. Может быть именем зарегистрированного размера изображения или массивом значений ширины и высоты в пикселях (в указанном порядке).

<?php
/**
 * Пример использования хука "image_downsize"
 *
 * @param bool|array $downsize Whether to short-circuit the image downsize.
 * @param int $id Attachment ID for image.
 * @param string|int[] $size Requested image size.
 * @return bool|array|null False on failure, array on success, null when short-circuiting.
 */
function custom_image_downsize( $downsize, $id, $size ) {
    // Проверяем, является ли запрошенный размер изображения "thumbnail"
    if ( $size === 'thumbnail' ) {
        // Создаем новый размер изображения
        $new_size = array( 150, 150 );
        
        // Возвращаем новый размер изображения
        return $new_size;
    }
    
    // Возвращаем исходный размер изображения
    return $downsize;
}
add_filter( 'image_downsize', 'custom_image_downsize', 10, 3 );

В данном примере кода определена функция «custom_image_downsize», которая используется в хуке «image_downsize». Функция проверяет, является ли запрошенный размер изображения «thumbnail» и, если да, создает новый размер изображения. В противном случае, функция возвращает исходный размер изображения.

Примеры использования

Изменение размера изображения перед выводом


/**
 * Изменение размера изображения перед выводом
 *
 * @param bool|array $downsize Whether to short-circuit the image downsize.
 * @param int $id Attachment ID for image.
 * @param string|int[] $size Requested image size.
 * @return bool|array|null
 */
function custom_image_downsize( $downsize, $id, $size ) {
    // Ваш код для изменения размера изображения
    
    return $downsize;
}
add_filter( 'image_downsize', 'custom_image_downsize', 10, 3 );

Определение размера изображения для отображения в галерее


/**
 * Определение размера изображения для отображения в галерее
 *
 * @param bool|array $downsize Whether to short-circuit the image downsize.
 * @param int $id Attachment ID for image.
 * @param string|int[] $size Requested image size.
 * @return bool|array|null
 */
function custom_image_downsize_gallery( $downsize, $id, $size ) {
    // Ваш код для определения размера изображения для отображения в галерее
    
    return $downsize;
}
add_filter( 'image_downsize', 'custom_image_downsize_gallery', 10, 3 );

Проверка доступных размеров изображений


/**
 * Проверка доступных размеров изображений
 *
 * @param bool|array $downsize Whether to short-circuit the image downsize.
 * @param int $id Attachment ID for image.
 * @param string|int[] $size Requested image size.
 * @return bool|array|null
 */
function custom_image_downsize_available_sizes( $downsize, $id, $size ) {
    // Ваш код для проверки доступных размеров изображений
    
    return $downsize;
}
add_filter( 'image_downsize', 'custom_image_downsize_available_sizes', 10, 3 );

Определение размера изображения для использования в шаблоне


/**
 * Определение размера изображения для использования в шаблоне
 *
 * @param bool|array $downsize Whether to short-circuit the image downsize.
 * @param int $id Attachment ID for image.
 * @param string|int[] $size Requested image size.
 * @return bool|array|null
 */
function custom_image_downsize_template( $downsize, $id, $size ) {
    // Ваш код для определения размера изображения для использования в шаблоне
    
    return $downsize;
}
add_filter( 'image_downsize', 'custom_image_downsize_template', 10, 3 );

Предотвращение изменения размера изображения


/**
 * Предотвращение изменения размера изображения
 *
 * @param bool|array $downsize Whether to short-circuit the image downsize.
 * @param int $id Attachment ID for image.
 * @param string|int[] $size Requested image size.
 * @return bool|array|null
 */
function custom_image_downsize_prevent( $downsize, $id, $size ) {
    // Ваш код для предотвращения изменения размера изображения
    
    return $downsize;
}
add_filter( 'image_downsize', 'custom_image_downsize_prevent', 10, 3 );

Определение размера изображения для использования в виджете


/**
 * Определение размера изображения для использования в виджете
 *
 * @param bool|array $downsize Whether to short-circuit the image downsize.
 * @param int $id Attachment ID for image.
 * @param string|int[] $size Requested image size.
 * @return bool|array|null
 */
function custom_image_downsize_widget( $downsize, $id, $size ) {
    // Ваш код для определения размера изображения для использования в виджете
    
    return $downsize;
}
add_filter( 'image_downsize', 'custom_image_downsize_widget', 10, 3 );

Вопросы и ответы

Как изменить размер изображения с помощью хука image_downsize?

Хук image_downsize позволяет изменить размер изображения до его вывода.

Для изменения размера изображения с помощью хука image_downsize нужно использовать функцию apply_filters().

add_filter( 'image_downsize', 'custom_image_downsize', 10, 3 );
function custom_image_downsize( $downsize, $id, $size ) {
    // Ваш код для изменения размера изображения
    return $downsize;
}

Как получить ID вложения изображения в хуке image_downsize?

В хуке image_downsize можно получить ID вложения изображения с помощью переменной $id.

add_filter( 'image_downsize', 'custom_image_downsize', 10, 3 );
function custom_image_downsize( $downsize, $id, $size ) {
    // Используйте переменную $id для получения ID вложения изображения
    return $downsize;
}

Как получить запрошенный размер изображения в хуке image_downsize?

В хуке image_downsize можно получить запрошенный размер изображения с помощью переменной $size.

add_filter( 'image_downsize', 'custom_image_downsize', 10, 3 );
function custom_image_downsize( $downsize, $id, $size ) {
    // Используйте переменную $size для получения запрошенного размера изображения
    return $downsize;
}

Как изменить значение $downsize в хуке image_downsize?

Чтобы изменить значение переменной $downsize в хуке image_downsize, нужно использовать фильтр apply_filters().


add_filter( 'image_downsize', 'custom_image_downsize', 10, 3 );
function custom_image_downsize( $downsize, $id, $size ) {
    // Ваш код для изменения значения $downsize
    return $downsize;
}

Как добавить новый зарегистрированный размер изображения в хуке image_downsize?

Чтобы добавить новый зарегистрированный размер изображения в хуке image_downsize, нужно использовать хук add_image_size().


add_image_size( 'custom-size', 800, 600, true );

Как проверить, является ли запрошенный размер изображения зарегистрированным в хуке image_downsize?

Чтобы проверить, является ли запрошенный размер изображения зарегистрированным в хуке image_downsize, нужно использовать функцию get_intermediate_image_sizes().


$sizes = get_intermediate_image_sizes();
if ( in_array( $size, $sizes ) ) {
    // Размер зарегистрирован
} else {
    // Размер не зарегистрирован
}

Как обработать ошибку в хуке image_downsize, если запрошенный размер не существует?

Если запрошенный размер изображения не существует, можно обработать эту ошибку с помощью хука image_downsize_error. Данный хук позволяет заменить или изменить ошибочный размер изображения.


function custom_image_downsize_error( $error, $attachment_id, $size ) {
    // Проверяем, является ли ошибка связанной с запрошенным размером
    if ( 'invalid_image_size' === $error ) {
        // Здесь можно выполнить дополнительные действия, например, записать логи или отправить уведомление
        // Возвращаем измененный размер изображения
        return array( 500, 500 );
    }
    // Если ошибка не связана с размером, возвращаем исходную ошибку
    return $error;
}
add_filter( 'image_downsize_error', 'custom_image_downsize_error', 10, 3 );

Как изменить порядок обработки хука image_downsize?

Для изменения порядка обработки хука image_downsize можно использовать хук image_downsize. Приоритет хука определяет порядок выполнения функций-обработчиков.


function custom_image_downsize( $downsize, $attachment_id, $size ) {
    // Выполняем свои действия перед обработкой хука image_downsize
    // ...
    // Возвращаем измененный результат обработки хука
    return $downsize;
}
add_filter( 'image_downsize', 'custom_image_downsize', 10, 3 );

Как отключить хук image_downsize для определенного изображения?

Для отключения хука image_downsize для определенного изображения можно использовать хук image_downsize. Внутри функции-обработчика можно проверить ID изображения и вернуть false, чтобы предотвратить обработку хука.


function disable_image_downsize( $downsize, $attachment_id, $size ) {
    // Проверяем ID изображения
    if ( $attachment_id === 123 ) {
        // Отключаем обработку хука для данного изображения
        return false;
    }
    // Если ID не совпадает, возвращаем исходный результат обработки хука
    return $downsize;
}
add_filter( 'image_downsize', 'disable_image_downsize', 10, 3 );

Хук image_downsize предоставляет возможность изменить или предотвратить обработку размеров изображений в WordPress. С помощью хука image_downsize_error можно обработать ошибку, связанную с запрошенным размером. Хук image_downsize позволяет изменить порядок обработки хука, а хук image_downsize можно использовать для отключения обработки хука для определенного изображения.

Связанные элементы

  • Функция wp_get_attachment_image(): Возвращает HTML-код для вставки изображения в контент.
  • Функция wp_get_attachment_image_src(): Возвращает URL, ширину и высоту изображения.
  • Функция wp_get_attachment_metadata(): Возвращает метаданные вложения изображения.
  • Функция wp_get_attachment_url(): Возвращает URL вложения изображения.
  • Функция wp_get_attachment_caption(): Возвращает подпись к изображению.
  • Функция wp_get_attachment_image_sizes(): Возвращает доступные размеры изображения.
  • Функция wp_get_attachment_thumb_file(): Возвращает путь к файлу миниатюры изображения.
  • Хук wp_generate_attachment_metadata: Фильтр, применяемый при генерации метаданных вложения изображения.
  • Класс WP_Image_Editor: Предоставляет методы для редактирования изображений.
  • Класс WP_Image_Editor_Imagick: Расширение класса WP_Image_Editor для работы с изображениями с помощью библиотеки Imagick.
Обсуждение