Як отримати список усіх можливих розмірів мініатюр, встановлених у межах теми


24

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

Тільки для уточнення я не запитую, як створити новий розмір зображення.


Пошук чогось подібного, але за допомогою інтерфейсу, натрапив на додатковий розмір зображення (zui) . Він має 500 днів без оновлень, але пройшов першу партію тестів.
brasofilo

Відповіді:


41

Знайшли його тут . Відповідь:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';

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

14

Якщо вам потрібні лише імена всіх розмірів зображень, ви можете використовувати get_intermediate_image_size :

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>

13

У ядрі 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] => 
        )

)

3
+1 для більш повної відповіді. Інші повертають додаткові розміри, але не за замовчуванням.
Cazuma Nii Cavalcanti

2
Ще краще, якщо ви використовуєте $default_image_sizes = get_intermediate_image_sizes();як medium_largeрозмір з WP 4.4.
natebeaty

Гарна пропозиція; Я оновив відповідь з вашою рекомендацією.
rjb

ACF зіпсував мене своїм медіа-масивом.
Адам Паттерсон

3

Якщо інша відповідь не спрацювала, використовуйте цей код, і він запуститься після ініціалізації 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 + WooCommerce + спеціальна тема)
Juraj.Lorinc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.