Как получить список всех возможных размеров миниатюр, установленных в теме
Какую функцию я могу использовать в плагине, чтобы получить размеры каждого размера изображения (предпочтительно в массиве), определенного в дочерней теме?
Просто для пояснения я не спрашиваю, как создать новый размер изображения.
6 answers
Нашел его здесь. Ответ таков:
global $_wp_additional_image_sizes;
print '<pre>';
print_r( $_wp_additional_image_sizes );
print '</pre>';
Ядро WordPress не имеет собственного метода для получения промежуточных размеров изображений (т.Е. ширины и высоты), но следующая вспомогательная функция получит все зарегистрированные размеры изображений вместе с их размерами:
/**
* Get all the registered image sizes along with their dimensions
*
* @global array $_wp_additional_image_sizes
*
* @link http://core.trac.wordpress.org/ticket/18947 Reference ticket
*
* @return array $image_sizes The image sizes
*/
function _get_all_image_sizes() {
global $_wp_additional_image_sizes;
$default_image_sizes = get_intermediate_image_sizes();
foreach ( $default_image_sizes as $size ) {
$image_sizes[ $size ][ 'width' ] = intval( get_option( "{$size}_size_w" ) );
$image_sizes[ $size ][ 'height' ] = intval( get_option( "{$size}_size_h" ) );
$image_sizes[ $size ][ 'crop' ] = get_option( "{$size}_crop" ) ? get_option( "{$size}_crop" ) : false;
}
if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) ) {
$image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes );
}
return $image_sizes;
}
, который выведет результаты, аналогичные:
Array
(
[thumbnail] => Array
(
[width] => 150
[height] => 150
[crop] => 1
)
[medium] => Array
(
[width] => 300
[height] => 300
[crop] =>
)
[medium_large] => Array
(
[width] => 768
[height] => 0
[crop] =>
)
[large] => Array
(
[width] => 1024
[height] => 1024
[crop] =>
)
)
Если вам нужны только имена всех размеров изображений, вы можете использовать get_intermediate_image_sizes:
<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>
Если другой ответ не сработал, используйте этот код, чтобы он работал после инициализации WordPress.
add_action('init', 'get_all_image_sizes');
function get_all_image_sizes(){
global $_wp_additional_image_sizes;
print '<pre>';
print_r( $_wp_additional_image_sizes );
print '</pre>';
}
Начиная с WP 5.3 достаточно использовать эту функцию:
wp_get_registered_image_subsizes();
Начиная с WP 4.7 вы можете использовать wp_get_additional_image_sizes() для регистрации дополнительных размеров изображений (исключая размеры изображений по умолчанию, добавленные WP).
Начиная с WP 5.3 вы можете использовать wp_get_registered_image_subsizes() для регистрации всех размеров изображений.