J'utilise le code suivant pour obtenir les tailles d'image:
public function getImageSizes(){
global $_wp_additional_image_sizes;
$sizes = array();
foreach(get_intermediate_image_sizes() as $s){
$sizes[$s] = array(0, 0);
if( in_array( $s, array( 'thumbnail', 'medium', 'large' ) ) ){
$sizes[$s][0] = get_option( $s . '_size_w' );
$sizes[$s][1] = get_option( $s . '_size_h' );
} else {
if ( isset( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes[ $s ] ) )
$sizes[$s] = array( $_wp_additional_image_sizes[$s]['width'], $_wp_additional_image_sizes[$s]['height'] );
}
}
return $sizes;
}
Le résultat est une sélection avec des tailles d'image, quelque chose comme ceci:
<option value="thumbnail">Thumbnail</option>
<option value="medium">Medium</option>
<option value="large">Large</option>
<option value="tribe_image_widget_custom" selected='selected'>Custom</option>
La question est de savoir comment traduire les tailles (Thumbnail, Medium, Large et Custom). Par défaut les tailles sont en anglais, j'ai besoin qu'elles soient dans une autre langue (j'utilise le plugin CodeStyling Localization pour cela).
Je vous remercie!
P.S .: pour biuld a select J'utilise ce code:
<select class="widefat" id="<?php echo $this->get_field_id('size'); ?>" name="<?php echo $this->get_field_name('size'); ?>">
<?php foreach ($this->getImageSizes() as $name => $atts): ?>
<option value="<?php echo $name ?>"<?php echo ($name==$size?' selected':'') ?>><?php echo ucwords($name) . ' ('. implode( 'x', $atts ). ')' ?></option>
<?php endforeach ?>
</select>
Vous pouvez utiliser __ (), _e (), _x () ou _ex () et votre domaine de texte pour rendre votre thème ou votre plugin traduisible.
J'ai vidé votre extrait de code à la base, de sorte que vous aurez l'idée plus facilement:
<select class="widefat">
<?php foreach ( $this->getImageSizes() as $name => $atts ) : ?>
<option value="<?php echo $name; ?>" ?>>
<?php echo ucwords( __( $name, 'textdomain' ) ); ?>
</option>
<?php endforeach; ?>
</select>
Malheureusement, l'internationalisation n'est pas possible avec des variables telles que $name
; vous devrez donc fournir les noms de taille d'image par défaut pour les rendre accessibles:
$sizes = array(
__( 'thumbnail', 'textdomain' ),
__( 'medium', 'textdomain' ),
__( 'large', 'textdomain' )
);
Si vous ajoutez vous-même les tailles d'image, vous pouvez éviter le piratage ci-dessus si vous les ajoutez comme ceci:
add_image_size( __( 'custom-image-size', 'textdomain' ), $width, $height, $crop );