get_intermediate_image_sizes

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

В WordPress при загрузки изображения создаются дополнительные копии оригинального изображения, с разными размерами. Некоторые из них устанавливаются в настройках медиафайлов, а другие регистрируются функцией add_image_size(). Эта функция позволяет получить название всех таких размеров.

✈ 1 раз = 0.000018с = очень быстро | 50000 раз = 0.14с = очень быстро PHP 7.0.5, WP 4.5.2
Хуки из функции:
intermediate_image_sizes
Возвращает

Массив. Массив с названиями имеющихся дополнительных размеров картинок.

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

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 Получим данные всех зарегистрированных размеров картинок

В 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, but has 0 width and height
		if( $unset_disabled && ($sizes[ $_size ]['width'] == 0) && ($sizes[ $_size ]['height'] == 0) )
			unset( $sizes[ $_size ] );
	}

	return $sizes;
}

Вызвав такую функцию получим:

<?php
function get_intermediate_image_sizes() {
	$_wp_additional_image_sizes = wp_get_additional_image_sizes();
	$image_sizes = array('thumbnail', 'medium', 'medium_large', 'large'); // Standard sizes
	if ( ! empty( $_wp_additional_image_sizes ) ) {
		$image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
	}

	/**
	 * Filters the list of intermediate image sizes.
	 *
	 * @since 2.5.0
	 *
	 * @param array $image_sizes An array of intermediate image sizes. Defaults
	 *                           are 'thumbnail', 'medium', 'medium_large', 'large'.
	 */
	return apply_filters( 'intermediate_image_sizes', $image_sizes );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *