Comment obtenir une liste de toutes les tailles de vignettes possibles définies dans un thème


24

Quelle fonction puis-je utiliser dans un plugin pour obtenir les dimensions de chaque taille d'image (dans un tableau de préférence) définie dans un thème enfant?

Juste pour clarification, je ne demande pas comment créer une nouvelle taille d'image.


La recherche de quelque chose comme ça, mais avec une interface, est tombée sur le plugin Tailles d'image supplémentaires (zui) . Il dispose de 500 jours sans mises à jour mais a réussi le premier lot de tests.
brasofilo

Réponses:


41

Je l'ai trouvé ici . La réponse est:

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

L'ajouter en haut du functions.phpfichier ne fonctionnera pas, mais collez-le dans l'une de vos fonctions dans ce fichier et cela devrait fonctionner.
kevnk


13

Le noyau WordPress n'a pas de méthode native pour obtenir des tailles d'image intermédiaires (c'est-à-dire largeur et hauteur), mais la fonction d'assistance suivante obtiendra toutes les tailles d'images enregistrées ainsi que leurs dimensions:

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

Qui produira des résultats similaires à:

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 pour une réponse plus complète. Les autres renvoient des tailles supplémentaires mais pas celles par défaut.
Cazuma Nii Cavalcanti du

2
Encore mieux si vous l'utilisez $default_image_sizes = get_intermediate_image_sizes();car il y a une medium_largetaille depuis WP 4.4.
natebeaty

Bonne suggestion; J'ai mis à jour la réponse avec votre recommandation.
rjb

ACF m'a gâté avec sa gamme de médias.
Adam Patterson

3

Si l'autre réponse n'a pas fonctionné, utilisez ce code, il s'exécutera donc après l'initialisation de 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>';
}

J'ai testé plusieurs méthodes et celle-ci a finalement fonctionné. (WP + WooCommerce + thème personnalisé)
Juraj.Lorinc
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.