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.

m-torin
fonte
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>';
m-torin
fonte
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
14

Se você precisar apenas dos nomes de todos os tamanhos de imagem, poderá usar get_intermediate_image_sizes :

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>
sqren
fonte
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] => 
        )

)
rjb
fonte
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>';
}
Shoaib Iqbal
fonte
Eu testei vários métodos e este finalmente funcionou. (WP + WooCommerce + tema personalizado)
Juraj.Lorinc