Come ottenere una lista di tutte le possibili dimensioni delle miniature impostate in un tema

11 nov 2011, 20:03:27
Visualizzazioni: 69.9K
Voti: 36

Quale funzione posso utilizzare in un plugin per ottenere le dimensioni di ogni formato immagine (preferibilmente in un array) che è definito in un tema child?

Per chiarezza, non sto chiedendo come creare una nuova dimensione immagine.

1
Commenti

Cercando qualcosa di simile, ma con un'interfaccia, mi sono imbattuto nel plugin Additional image sizes (zui). Non viene aggiornato da 500 giorni ma ha superato il primo batch di test.

brasofilo brasofilo
6 lug 2012 04:51:25
Tutte le risposte alla domanda 8
4
61

Trovato qui. La risposta è:

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

Aggiungerlo all'inizio del file functions.php non funzionerà, ma inseriscilo in una qualsiasi delle tue funzioni in quel file e dovrebbe funzionare.

kevnk kevnk
15 ago 2017 23:40:43

Questo elenca solo le dimensioni aggiuntive, non dimensioni come "large"

Fanky Fanky
19 gen 2021 11:37:37

Risposta errata, non dovrebbe essere accettata come tale.

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

Il core di WordPress non ha un metodo nativo per ottenere le dimensioni intermedie delle immagini (cioè larghezza e altezza), ma la seguente funzione helper otterrà tutte le dimensioni delle immagini registrate insieme alle loro dimensioni:

/**
 * Ottiene tutte le dimensioni delle immagini registrate insieme alle loro dimensioni
 *
 * @global array $_wp_additional_image_sizes
 *
 * @link http://core.trac.wordpress.org/ticket/18947 Ticket di riferimento
 *
 * @return array $image_sizes Le dimensioni delle immagini
 */
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;
}

Che produrrà risultati simili 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 gen 2017 23:18:30
Commenti

+1 per una risposta più completa. Le altre restituiscono dimensioni aggiuntive ma non quelle predefinite.

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

Ancora meglio se usi $default_image_sizes = get_intermediate_image_sizes(); dato che c'è una dimensione medium_large da WP 4.4.

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

Ottimo suggerimento; ho aggiornato la risposta con la tua raccomandazione.

rjb rjb
23 set 2017 22:24:38

ACF mi ha viziato con il suo array per i media.

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

Utile in WP 5.4 usando PHP 7.3 a marzo 2020 :)

EsaulFarfan EsaulFarfan
1 apr 2020 10:43:41

Dalla versione 5.3, esiste wp_get_registered_image_subsizes()

Marc Marc
3 set 2020 19:40:56

Questa risposta funziona perfettamente, ma è stata sostituita dall'ultimo commento per WordPress 5.3 e versioni successive: https://developer.wordpress.org/reference/functions/wp_get_registered_image_subsizes/

nabrown nabrown
8 giu 2021 19:11:38
Mostra i restanti 2 commenti
0
18

Se hai solo bisogno dei nomi di tutte le dimensioni delle immagini, puoi utilizzare get_intermediate_image_sizes:

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

Da WP 5.3 è sufficiente utilizzare questa funzione:

wp_get_registered_image_subsizes();

Documentazione: https://developer.wordpress.org/reference/functions/wp_get_registered_image_subsizes/

27 lug 2020 18:11:19
Commenti

La risposta più breve e l'unica corretta qui, ma perché così in basso nei ranking.

Picard Picard
28 giu 2022 12:08:59

L'unica risposta corretta. Probabilmente basso ranking perché esiste solo da WP 5.3, che al momento della domanda dell'OP non era disponibile. Tuttavia, questa dovrebbe essere l'unica risposta accettata, poiché tutto il resto è il solito "butta dentro del codice spazzatura da SO" - upvotato per farlo salire.

User User
8 nov 2022 07:02:03
1

Se l'altra risposta non ha funzionato, utilizza questo codice, in modo che venga eseguito dopo l'inizializzazione di 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>';
}
12 dic 2016 12:41:47
Commenti

Ho testato diversi metodi e questo alla fine ha funzionato. (WP + WooCommerce + tema personalizzato)

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

Dalla versione di WP 4.7 puoi utilizzare wp_get_additional_image_sizes() per ottenere le dimensioni aggiuntive delle immagini registrate (escluse le dimensioni predefinite aggiunte da WP).

Dalla versione di WP 5.3 puoi utilizzare wp_get_registered_image_subsizes() per ottenere tutte le dimensioni delle immagini registrate.

25 set 2020 15:02:42
0

Utilizza le seguenti funzioni:

get_intermediate_image_sizes(); // ottiene tutti i nomi delle dimensioni delle immagini.
wp_get_additional_image_sizes(); // ottiene tutti i dati aggiuntivi delle dimensioni delle immagini.
wp_get_registered_image_subsizes(); // ottiene tutti i dati delle dimensioni delle immagini.
24 ott 2022 14:19:30
0

So un po' in ritardo alla festa, ma ecco il mio modo per visualizzare tutte le dimensioni delle immagini nell'admin

/**
 * Metabox con tutte le dimensioni delle immagini nell'Admin
 */
function sixtyseven_register_imagesizes_dashboard_widget() {
        global $wp_meta_boxes;
    
        wp_add_dashboard_widget(
            'imagesizes_dashboard_widget',
            'Dimensioni immagini registrate',
            '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 'larghezza: '.$values['width'].'px, ';
            echo 'altezza: '.$values['height'].'px';
            if($values['crop'] === true){
                echo ', ritagliata';
            }
            echo '</li>';
        }
        echo '</ul>';
    }

Spero sia utile.

7 giu 2024 14:28:19