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

11 nov 2011, 20:03:27
Vistas: 69.9K
Votos: 36

¿Qué función puedo usar en un plugin para obtener las dimensiones de cada tamaño de imagen (preferiblemente en un array) que está definido en un tema hijo?

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

1
Comentarios

Buscando algo como esto, pero con una interfaz, me encontré con el plugin Additional image sizes (zui). Tiene 500 días sin actualizaciones pero pasó la primera tanda de pruebas.

brasofilo brasofilo
6 jul 2012 04:51:25
Todas las respuestas a la pregunta 8
4
61

Lo encontré aquí. La respuesta es:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';
11 nov 2011 20:09:03
Comentarios

Agregarlo al inicio del archivo functions.php no funcionará, pero colócalo dentro de cualquiera de tus funciones en ese archivo y debería funcionar.

kevnk kevnk
15 ago 2017 23:40:43

Esto solo lista los tamaños adicionales, no tamaños como "large"

Fanky Fanky
19 ene 2021 11:37:37

Respuesta incorrecta, no debería ser aceptada como tal.

User User
8 nov 2022 07:02:45
7
36

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

/**
 * Obtiene todos los tamaños de imagen registrados junto con sus dimensiones
 *
 * @global array $_wp_additional_image_sizes
 *
 * @link http://core.trac.wordpress.org/ticket/18947 Ticket de referencia
 *
 * @return array $image_sizes Los tamaños de imagen
 */
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;
}

Que producirá 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] => 
        )

)
6 ene 2017 23:18:30
Comentarios

+1 por una respuesta más completa. Las otras devuelven tamaños adicionales pero no los predeterminados.

Cazuma Nii Cavalcanti Cazuma Nii Cavalcanti
9 ene 2017 00:30:36

Incluso mejor si usas $default_image_sizes = get_intermediate_image_sizes(); ya que hay un tamaño medium_large desde WP 4.4.

Nate Beaty Nate Beaty
22 sept 2017 01:23:39

Buena sugerencia; he actualizado la respuesta con tu recomendación.

rjb rjb
23 sept 2017 22:24:38

ACF me ha malcriado con su array de medios.

Adam Patterson Adam Patterson
21 may 2019 05:54:36

Útil en WP 5.4 usando PHP 7.3 en marzo 2020 :)

EsaulFarfan EsaulFarfan
1 abr 2020 10:43:41

Desde la versión 5.3, existe wp_get_registered_image_subsizes()

Marc Marc
3 sept 2020 19:40:56

Esta respuesta funciona perfectamente, pero ha sido reemplazada por el último comentario, para WordPress 5.3 y versiones superiores: https://developer.wordpress.org/reference/functions/wp_get_registered_image_subsizes/

nabrown nabrown
8 jun 2021 19:11:38
Mostrar los 2 comentarios restantes
0
18

Si solo necesitas los nombres de todos los tamaños de imagen, puedes usar get_intermediate_image_sizes:

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>
22 may 2013 14:32:32
2
18

Desde WP 5.3 es suficiente usar esta función:

wp_get_registered_image_subsizes();

Documentación: https://developer.wordpress.org/reference/functions/wp_get_registered_image_subsizes/

27 jul 2020 18:11:19
Comentarios

La respuesta más corta y la única correcta aquí, pero ¿por qué está tan abajo en los rankings?

Picard Picard
28 jun 2022 12:08:59

La única respuesta adecuada. Probablemente esté en un ranking bajo porque solo existe desde WP 5.3, que en el momento de la pregunta del OP no estaba disponible. Sin embargo, esta debería ser la única respuesta aceptada, ya que todo lo demás es el típico "arrojar algo de basura de código de SO" - votado a favor para subirlo.

User User
8 nov 2022 07:02:03
1

Si la otra respuesta no funcionó, usa este código, que se ejecutará después de que WordPress se haya inicializado.

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>';
}
12 dic 2016 12:41:47
Comentarios

He probado varios métodos y este finalmente funcionó. (WP + WooCommerce + tema personalizado)

Juraj.Lorinc Juraj.Lorinc
19 feb 2018 13:19:03
0

Desde WP 4.7 puedes usar wp_get_additional_image_sizes() para obtener los tamaños de imagen adicionales registrados (excluyendo los tamaños de imagen predeterminados añadidos por WP).

Desde WP 5.3 puedes usar wp_get_registered_image_subsizes() para obtener todos los tamaños de imagen registrados.

25 sept 2020 15:02:42
0

Utiliza las siguientes funciones:

get_intermediate_image_sizes(); // Obtiene todos los nombres de tamaños de imagen.
wp_get_additional_image_sizes(); // Obtiene todos los datos adicionales de tamaños de imagen.
wp_get_registered_image_subsizes(); // Obtiene todos los datos de tamaños de imagen registrados.
24 oct 2022 14:19:30
0

Sé que llego un poco tarde a la fiesta, pero aquí está mi forma de mostrar todos los tamaños de imágenes en el administrador

/**
 * Metabox con todos los tamaños de imágenes en el Admin
 */
function sixtyseven_register_imagesizes_dashboard_widget() {
        global $wp_meta_boxes;
    
        wp_add_dashboard_widget(
            'imagesizes_dashboard_widget',
            'Tamaños de imagen registrados',
            'sixtyseven_imagesizes_dashboard_widget_display'
        );
    
        $dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
    
        $new_widget = array( 'imagesizes_dashboard_widget' => $dashboard['imagesizes_dashboard_widget'] );
        unset( $dashboard['imagesizes_dashboard_widget'] );
    
        $sorted_dashboard = array_merge( $new_widget, $dashboard );
        $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
    }
    add_action( 'wp_dashboard_setup', 'sixtyseven_register_imagesizes_dashboard_widget' );
    
    function sixtyseven_imagesizes_dashboard_widget_display() {
        $sizes = wp_get_registered_image_subsizes();
        echo '<ul>';
        foreach($sizes as $name => $values){
            echo '<li>';
            echo '<strong>'.$name.':</strong> ';
            echo 'ancho: '.$values['width'].'px, ';
            echo 'alto: '.$values['height'].'px';
            if($values['crop'] === true){
                echo ', recortado';
            }
            echo '</li>';
        }
        echo '</ul>';
    }

Espero que esto ayude.

7 jun 2024 14:28:19