Jak uzyskać listę wszystkich możliwych rozmiarów miniatur ustawionych w motywie


24

Jakiej funkcji mogę użyć we wtyczce, aby uzyskać wymiary każdego rozmiaru obrazu (najlepiej w tablicy), który jest zdefiniowany w motywie potomnym?

Tylko dla wyjaśnienia Nie pytam, jak utworzyć nowy rozmiar obrazu.


Szukając czegoś takiego, ale z interfejsem, natknąłem się na wtyczkę Dodatkowe rozmiary obrazów (zui) . Ma 500 dni bez aktualizacji, ale przeszedł pierwszą serię testów.
brasofilo,

Odpowiedzi:


41

Znalazłem to tutaj . Odpowiedź to:

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

Dodanie go do górnej części functions.phppliku nie będzie działać, ale należy umieścić go w dowolnej funkcji w tym pliku i powinien on działać.
kevnk


13

Rdzeń WordPress nie ma natywnej metody uzyskiwania pośrednich rozmiarów obrazu (tj. Szerokości i wysokości), ale następująca funkcja pomocnicza uzyska wszystkie zarejestrowane rozmiary obrazów wraz z ich wymiarami:

/**
 * 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;
}

Które wygenerują wyniki podobne do:

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 za pełniejszą odpowiedź. Pozostałe zwracają dodatkowe rozmiary, ale nie domyślne.
Cazuma Nii Cavalcanti

2
Nawet lepiej, jeśli używasz, $default_image_sizes = get_intermediate_image_sizes();ponieważ istnieje medium_largerozmiar od WP 4.4.
natebeaty

Dobry pomysł; Zaktualizowałem odpowiedź z twoim zaleceniem.
rjb

ACF rozpieszcza mnie swoją tablicą multimediów.
Adam Patterson

3

Jeśli inna odpowiedź nie zadziałała, użyj tego kodu, aby działał po zainicjowaniu 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>';
}

Przetestowałem kilka metod i ta w końcu zadziałała. (WP + WooCommerce + niestandardowy motyw)
Juraj.Lorinc
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.