Как получить список всех возможных размеров миниатюр, установленных в теме

11 нояб. 2011 г., 20:03:27
Просмотры: 69.9K
Голосов: 36

Какую функцию можно использовать в плагине для получения размеров всех изображений (предпочтительно в массиве), которые определены в дочерней теме?

Для ясности: я не спрашиваю о том, как создать новый размер изображения.

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

Искал что-то подобное, но с интерфейсом, наткнулся на плагин Additional image sizes (zui). У него 500 дней без обновлений, но он прошел первые тесты.

brasofilo brasofilo
6 июл. 2012 г. 04:51:25
Все ответы на вопрос 8
4
61

Нашел здесь. Ответ:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';
11 нояб. 2011 г. 20:09:03
Комментарии

Добавление этого в начало файла functions.php не сработает, но если поместить это в любую из ваших функций в этом файле, то должно заработать.

kevnk kevnk
15 авг. 2017 г. 23:40:43

Здесь перечислены только дополнительные размеры, но не такие размеры как "large"

Fanky Fanky
19 янв. 2021 г. 11:37:37

Неверный ответ, не должен быть принят как правильный.

User User
8 нояб. 2022 г. 07:02:45

По состоянию на 2023 год это правильный ответ: https://wordpress.stackexchange.com/questions/33532/how-to-get-a-list-of-all-the-possible-thumbnail-sizes-set-within-a-theme#answer-410707

user1676224 user1676224
24 авг. 2023 г. 11:38:06
7
36

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

/**
 * Получить все зарегистрированные размеры изображений вместе с их размерами
 *
 * @global array $_wp_additional_image_sizes
 *
 * @link http://core.trac.wordpress.org/ticket/18947 Ссылка на тикет
 *
 * @return array $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] => 
        )

)
6 янв. 2017 г. 23:18:30
Комментарии

+1 за более полный ответ. Другие возвращают дополнительные размеры, но не стандартные.

Cazuma Nii Cavalcanti Cazuma Nii Cavalcanti
9 янв. 2017 г. 00:30:36

Еще лучше использовать $default_image_sizes = get_intermediate_image_sizes();, так как начиная с WP 4.4 появился размер medium_large.

Nate Beaty Nate Beaty
22 сент. 2017 г. 01:23:39

Хорошее предложение; я обновил ответ с вашей рекомендацией.

rjb rjb
23 сент. 2017 г. 22:24:38

ACF испортил меня своим массивом медиа.

Adam Patterson Adam Patterson
21 мая 2019 г. 05:54:36

Полезно в WP 5.4 с PHP 7.3 в марте 2020 :)

EsaulFarfan EsaulFarfan
1 апр. 2020 г. 10:43:41

Начиная с версии 5.3, существует функция wp_get_registered_image_subsizes()

Marc Marc
3 сент. 2020 г. 19:40:56

Это решение работает отлично, но для WordPress 5.3 и выше его заменил последний комментарий: https://developer.wordpress.org/reference/functions/wp_get_registered_image_subsizes/

nabrown nabrown
8 июн. 2021 г. 19:11:38
Показать остальные 2 комментариев
0
18

Если вам нужны только названия всех размеров изображений, вы можете использовать get_intermediate_image_sizes:

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>
22 мая 2013 г. 14:32:32
2
18

Начиная с версии WP 5.3, достаточно использовать эту функцию:

wp_get_registered_image_subsizes();

Документация: https://developer.wordpress.org/reference/functions/wp_get_registered_image_subsizes/

27 июл. 2020 г. 18:11:19
Комментарии

Самый короткий и единственно правильный ответ, но почему так низко в рейтинге.

Picard Picard
28 июн. 2022 г. 12:08:59

Единственный правильный ответ. Вероятно, низкий рейтинг из-за того, что он появился только в WP 5.3, которого на момент вопроса OP ещё не было. Тем не менее, это должен быть единственный принятый ответ, так как все остальное — типичный "мусорный код с SO", который накручивают голосами, чтобы поднять.

User User
8 нояб. 2022 г. 07:02:03
1

Если предыдущий ответ не сработал, используйте этот код — он выполнится после инициализации 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>';
}
12 дек. 2016 г. 12:41:47
Комментарии

Я протестировал несколько методов, и этот наконец сработал. (WP + WooCommerce + пользовательская тема)

Juraj.Lorinc Juraj.Lorinc
19 февр. 2018 г. 13:19:03
0

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

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

25 сент. 2020 г. 15:02:42
0

Используйте следующие функции:

get_intermediate_image_sizes(); // получить все названия размеров изображений.
wp_get_additional_image_sizes(); // получить все дополнительные данные о размерах изображений.
wp_get_registered_image_subsizes(); // получить все данные о размерах изображений.
24 окт. 2022 г. 14:19:30
0

Я немного опоздал на вечеринку, но вот мой способ отображения всех размеров изображений в админке

/**
 * Метабокс со всеми размерами изображений в админке
 */
function sixtyseven_register_imagesizes_dashboard_widget() {
        global $wp_meta_boxes;
    
        wp_add_dashboard_widget(
            'imagesizes_dashboard_widget',
            'Зарегистрированные размеры изображений',
            'sixtyseven_imagesizes_dashboard_widget_display'
        );
    
        $dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
    
        $new_widget = array( 'imagesizes_dashboard_widget' => $dashboard['imagesizes_dashboard_widget'] );
        unset( $dashboard['imagesizes_dashboard_widget'] );
    
        $sorted_dashboard = array_merge( $new_widget, $dashboard );
        $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
    }
    add_action( 'wp_dashboard_setup', 'sixtyseven_register_imagesizes_dashboard_widget' );
    
    function sixtyseven_imagesizes_dashboard_widget_display() {
        $sizes = wp_get_registered_image_subsizes();
        echo '<ul>';
        foreach($sizes as $name => $values){
            echo '<li>';
            echo '<strong>'.$name.':</strong> ';
            echo 'ширина: '.$values['width'].'px, ';
            echo 'высота: '.$values['height'].'px';
            if($values['crop'] === true){
                echo ', обрезано';
            }
            echo '</li>';
        }
        echo '</ul>';
    }

Надеюсь, это поможет.

7 июн. 2024 г. 14:28:19