Como obter uma lista de todos os tamanhos possíveis de miniaturas definidos em um tema


24

Que função posso usar em um plug-in para obter as dimensões de cada tamanho de imagem (preferencialmente em uma matriz) definida em um tema filho?

Apenas para esclarecimento, não estou perguntando como criar um novo tamanho de imagem.


Procurando algo parecido com isto, mas com uma interface, encontrou o plugin Tamanhos de imagem adicionais (zui) . Tem 500 dias sem atualizações, mas passou no primeiro lote de testes.
Brasofilo

Respostas:


41

Encontrei aqui . A resposta é:

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

Adicioná-lo à parte superior do functions.phparquivo não funcionará, mas cole-o em qualquer uma das suas funções nesse arquivo e deve funcionar.
kevnk


13

O núcleo do WordPress não possui um método nativo para obter tamanhos intermediários de imagem (largura e altura), mas a seguinte função auxiliar obtém todos os tamanhos de imagem registrados, juntamente com suas dimensões:

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

O que produzirá resultados semelhantes a:

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 para uma resposta mais completa. Os outros retornam tamanhos adicionais, mas não os padrão.
Cazuma Nii Cavalcanti

2
Ainda melhor se você usar, $default_image_sizes = get_intermediate_image_sizes();pois há um medium_largetamanho desde o WP 4.4.
Netebeaty 21/09/2017

Boa sugestão; Atualizei a resposta com sua recomendação.
Rjb 23/09

A ACF me estragou com sua matriz de mídia.
Adam Patterson

3

Se a outra resposta não funcionou, use este código, para que ele seja executado após a inicialização do 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>';
}

Eu testei vários métodos e este finalmente funcionou. (WP + WooCommerce + tema personalizado)
Juraj.Lorinc
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.