get_intermediate_image_sizes() WP 3.0.0

Отримує масив назв усіх проміжних розмірів картинок, зареєстрованих для сайту. Також можна отримати усі дані розмірів.

У WordPress під час завантаження зображення створюються додаткові копії оригінального зображення з різними розмірами. Деякі з них встановлюються в налаштуваннях медіафайлів, інші реєструються функцією add_image_size() . Ця функція дозволяє отримати назву всіх таких розмірів.

Використовуйте wp_get_registered_image_subsizes() , коли потрібно отримати докладні дані: ширину, висоту та кадрування.

1 раз – 0.000018 сек
(дуже швидко) | 50000 разів – 0.14 сек
(дуже швидко) |
PHP 7.0.5, WP 4.5.2

Хуки з функції

Повертає

Строку[]. Масив із назвами наявних додаткових розмірів картинок.

Використання

get_intermediate_image_sizes();

Приклади

0

#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) для висоти та ширини, то технічно ми цей розмір вимкнено – мініатюра для нього вже не створюється, але ця функція його покаже…

Щоб вирішити ці проблеми, дивіться наступний приклад.

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] =>
		)

)
*/
0

#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() 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 );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *