En supposant que j’ai une taille de vignette personnalisée, définie par ce qui suit ...
add_image_size( $name, $dim_x, $dim_y, true );
... comment puis-je obtenir les dimensions d'image définies par programme, en utilisant uniquement $ name?
Si vous examinez la source de la fonction, elle stocke simplement les arguments dans $_wp_additional_image_sizes
global, clé par nom.
Autant que je me souvienne, il n'y a pas de fonction API dédiée (get_intermediate_image_sizes()
retournera une liste de noms, mais pas de données). Il suffit d’accéder au global et de rechercher les données dont vous avez besoin par clé.
Grâce à la réponse donnée par Rarst, j'ai pu trouver ce dans la documentation Wordpress ...
function get_image_sizes( $name ) {
global $_wp_additional_image_sizes;
$sizes = array();
$get_intermediate_image_sizes = get_intermediate_image_sizes();
// Create the full array with sizes and crop info
foreach( $get_intermediate_image_sizes as $_size ) {
if ( in_array( $_size, array( 'thumbnail', 'medium', 'large' ) ) ) {
$sizes[ $_size ]['width'] = get_option( $_size . '_size_w' );
$sizes[ $_size ]['height'] = get_option( $_size . '_size_h' );
$sizes[ $_size ]['crop'] = (bool) get_option( $_size . '_crop' );
} elseif ( isset( $_wp_additional_image_sizes[ $_size ] ) ) {
$sizes[ $_size ] = array(
'width' => $_wp_additional_image_sizes[ $_size ]['width'],
'height' => $_wp_additional_image_sizes[ $_size ]['height'],
'crop' => $_wp_additional_image_sizes[ $_size ]['crop']
);
}
}
// Get only 1 size if found
if ( $size ) {
if( isset( $sizes[ $size ] ) ) {
return $sizes[ $size ];
} else {
return false;
}
}
return $sizes;
}
<?php
var_dump(get_image_sizes('custom-size'));
?>
array(3) {
["width"] => int(250)
["height"] => int(250)
["crop"] => bool(true)
}