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


24

Quale funzione posso usare in un plugin per ottenere le dimensioni di ogni dimensione di immagine (preferibilmente in un array) che è definita in un tema figlio?

Solo per chiarimenti non sto chiedendo come creare una nuova dimensione dell'immagine.


Alla ricerca di qualcosa del genere, ma con un'interfaccia, è emerso il plug-in Dimensioni dell'immagine aggiuntive (zui) . Ha 500 giorni senza aggiornamenti ma ha superato il primo lotto di test.
brasofilo,

Risposte:


41

L'ho trovato qui . La risposta è:

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

Aggiungerlo nella parte superiore del functions.phpfile non funzionerà, ma inseriscilo in una qualsiasi delle tue funzioni in quel file e dovrebbe funzionare.
kevnk,


13

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

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

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] => 
        )

)

3
+1 per una risposta più completa. Gli altri restituiscono dimensioni aggiuntive ma non quelle predefinite.
Cazuma Nii Cavalcanti,

2
Ancora meglio se si utilizza in $default_image_sizes = get_intermediate_image_sizes();quanto esiste una medium_largedimensione dal WP 4.4.
natebeaty,

Buon consiglio; Ho aggiornato la risposta con la tua raccomandazione.
rjb,

ACF mi ha viziato con il suo array multimediale.
Adam Patterson,

3

Se l'altra risposta non ha funzionato, utilizza questo codice, quindi verrà 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>';
}

Ho testato diversi metodi e questo finalmente ha funzionato. (WP + WooCommerce + tema personalizzato)
Juraj.Lorinc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.