Cómo obtener una lista de todos los tamaños de miniatura posibles establecidos dentro de un tema

24

¿Qué función puedo usar en un complemento para obtener las dimensiones de cada tamaño de imagen (en una matriz preferiblemente) que se define en un tema secundario?

Solo para aclarar, no estoy preguntando cómo crear un nuevo tamaño de imagen.

m-torin
fuente
Al buscar algo como esto, pero con una interfaz, encontré el complemento Tamaños de imagen adicionales (zui) . Tiene 500 días sin actualizaciones, pero pasó el primer lote de pruebas.
brasofilo

Respuestas:

41

Lo encontré aquí . La respuesta es:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';
m-torin
fuente
Agregarlo a la parte superior del functions.phparchivo no funcionará, pero péguelo en cualquiera de sus funciones en ese archivo y debería funcionar.
kevnk
14

Si solo necesita los nombres de todos los tamaños de imagen, puede usar get_intermediate_image_sizes :

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>
sqren
fuente
13

El núcleo de WordPress no tiene un método nativo para obtener tamaños de imagen intermedios (es decir, ancho y alto), pero la siguiente función auxiliar obtendrá todos los tamaños de imagen registrados junto con sus dimensiones:

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

Lo que arrojará resultados similares 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
fuente
3
+1 para una respuesta más completa. Los otros devuelven tamaños adicionales pero no los predeterminados.
Cazuma Nii Cavalcanti
2
Aún mejor si lo usa $default_image_sizes = get_intermediate_image_sizes();ya que hay un medium_largetamaño desde WP 4.4.
natebeaty
Buena sugerencia; He actualizado la respuesta con tu recomendación.
rjb
ACF me ha mimado con su conjunto de medios.
Adam Patterson
3

Si la otra respuesta no funcionó, use este código, por lo que se ejecutará después de que se inicialice 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
fuente
He probado varios métodos y este finalmente funcionó. (WP + WooCommerce + tema personalizado)
Juraj.Lorinc