get_intermediate_image_sizes()
Отримує масив назв усіх проміжних розмірів картинок, зареєстрованих для сайту. Також можна отримати усі дані розмірів.
У WordPress під час завантаження зображення створюються додаткові копії оригінального зображення з різними розмірами. Деякі з них встановлюються в налаштуваннях медіафайлів, інші реєструються функцією add_image_size() . Ця функція дозволяє отримати назву всіх таких розмірів.
Використовуйте wp_get_registered_image_subsizes() , коли потрібно отримати докладні дані: ширину, висоту та кадрування.
(дуже швидко) | 50000 разів – 0.14 сек
(дуже швидко) |
PHP 7.0.5, WP 4.5.2
Хуки з функції
Повертає
Строку[]
. Масив із назвами наявних додаткових розмірів картинок.
Використання
get_intermediate_image_sizes();
Приклади
#1 Отримаємо назви віх розмірів
$sizes = get_intermediate_image_sizes(); print_r ($ sizes); /* Отримаємо: Array ( [0] => thumbnail [1] => medium [2] => medium_large [3] => large [4] => shop_thumbnail [5] => shop_catalog [6] => shop_single [7] => post-thumbnail ) */
Однак у цьому випадку ми не бачимо даних кожного з розмірів, яка для нього встановлена ширина та висота, кадровано зображення чи ні.
Також, якщо наприклад у медіафайлах для розміру “Великий” (large) встановити нулі (0) для висоти та ширини, то технічно ми цей розмір вимкнено – мініатюра для нього вже не створюється, але ця функція його покаже…
Щоб вирішити ці проблеми, дивіться наступний приклад.
#2 Отримаємо дані всіх зареєстрованих розмірів картинок
Починаючи з WP 5.3 існує функція з таким самим функціоналом: wp_get_registered_image_subsizes() .
У WordPress немає такої вбудованої функції, але її не складно створити, маючи під рукою get_intermediate_image_sizes() :
/** * Отримує інформацію про всі зареєстровані розміри картинок. * * @global $_wp_additional_image_sizes * @uses get_intermediate_image_sizes() * * @param boolean [$unset_disabled = true] Видалити зі списку розміри з 0 висотою та шириною? * @return array Дані всіх розмірів. */ function get_image_sizes( $unset_disabled = true ) { $wais = & $GLOBALS['_wp_additional_image_sizes']; $ sizes = array (); foreach ( get_intermediate_image_sizes() as $_size ) { if ( in_array( $_size, array('thumbnail', 'medium', 'medium_large', 'large') ) ) { $sizes[ $_size ] = array( 'width' => get_option( "{$_size}_size_w" ), 'height' => get_option( "{$_size}_size_h" ), 'crop' => (bool) get_option( "{$_size}_crop" ), ); } elseif ( isset( $wais[$_size] ) ) { $sizes[ $_size ] = array( 'width' => $wais[ $_size ]['width'], 'height' => $wais[ $_size ]['height'], 'crop' => $wais[ $_size ]['crop'], ); } // size registered, але має 0 width and height if( $unset_disabled && ($sizes[ $_size ]['width'] == 0) && ($sizes[ $_size ]['height'] == 0) ) unset($sizes[$_size]); } return $ sizes; }
Викликавши таку функцію отримаємо:
print_r(get_image_sizes()); /* Array ( [thumbnail] => Array ( [width] => 80 [height] => 80 [crop] => 1 ) [medium] => Array ( [width] => 120 [height] => 120 [crop] => ) ) */
#3 Отримаємо дані окремого розміру
Тепер, маючи під рукою функцію, яка отримує всі розміри зображень та їх дані, можна легко доповнити функціонал, написавши функції отримання окремих даних зазначеного розміру.
/** * Отримує дані певного розміру зображення. * * @uses get_image_sizes() * @param string $size Назва розміру * @return bool|array $size Дані розміру зображення або false якщо такого розміру немає. */ function get_image_size( $size ) { $ sizes = get_image_sizes (0); return isset( $sizes[ $size ] ) ? $ sizes $size : false; } /** * Отримує ширину певного розміру зображення. * * @uses get_image_size() * @param string $size Назва розміру * @return bool|int Ширину або false якщо розміру немає. */ function get_image_size_width( $size ) { if ( ! $size = get_image_size( $size ) ) return false; return isset( $size['width'] ) ? $size['width'] : false; } /** * Отримує висоту певного розміру зображення. * * @uses get_image_size() * @param string $size Назва розміру * @return bool|int Висоту або false якщо розміру немає. */ function get_image_size_height( $size ) { if ( ! $size = get_image_size( $size ) ) return false; return isset( $size['height'] ) ? $size['height'] : false; }
А тепер демонстрація роботи створених функцій:
$medium_size = get_image_size('medium'); /* поверне: Array ( [width] => 120 [height] => 120 [crop] => ) */ $medium_size_width = get_image_size_width('medium'); //> 120 $medium_size_height = get_image_size_height('medium'); //> 120
список змін
З версії 3.0.0 | Введено. |
Код get_intermediate_image_sizes() get intermediate image sizes WP 6.0.2
function get_intermediate_image_sizes() { $default_sizes = array( 'thumbnail', 'medium', 'medium_large', 'large'); $additional_sizes = wp_get_additional_image_sizes(); if ( ! empty( $additional_sizes ) ) { $default_sizes = array_merge( $default_sizes, array_keys( $additional_sizes ) ); } /** * Filters List of intermediate image sizes. * * @ Since 2.5.0 * * @param string[] $default_sizes На array of intermediate image size names. Defaults * are 'thumbnail', 'medium', 'medium_large', 'large'. */ return apply_filters( 'intermediate_image_sizes', $default_sizes ); }