web-dev-qa-db-fra.com

image_size_names_choose le filtre ne s'affiche pas

J'ai créé une nouvelle taille d'image à l'aide de add_image_size () et je souhaite qu'elle soit répertoriée dans la taille d'image de la bibliothèque multimédia lorsque je l'insère. J'ai donc le code suivant:

add_image_size( "grade-image", 320, 300, true );

function sgr_display_image_size_names_muploader( $sizes ) {

    $new_sizes = array(
        "0" => "grade-image",
    );

/*
    $added_sizes = get_intermediate_image_sizes();

    // $added_sizes is an indexed array, therefore need to convert it
    // to associative array, using $value for $key and $value
    foreach( $added_sizes as $key => $value) {
        $new_sizes[$value] = $value;
    }
*/  
    // This preserves the labels in $sizes, and merges the two arrays
    $new_sizes = array_merge( $new_sizes, $sizes );

    return $new_sizes;
}
add_filter('image_size_names_choose', 'sgr_display_image_size_names_muploader', 11, 1);

cependant, il ne montre pas la taille de la note. J'ai essayé le bloc commenté pour afficher une liste de toutes les tailles d'image, et certaines des autres tailles, mais pas celle de grade. Je suis vraiment perplexe.

4
Angela

Non, cela semble bien fonctionner. Vous pouvez le tester en faisant

<?php echo get_the_post_thumbnail('grade-image'); ?>

essaye ça.

add_image_size( "grade-image", 320, 300, true );
add_filter( 'image_size_names_choose', 'my_custom_sizes' );

function my_custom_sizes( $sizes ) {
    return array_merge( $sizes, array(
        'grade-image' => __('Grade Image'),
    ) );
}
7
David Hechler

Le code de David fonctionnera probablement, mais vous ne devriez pas utiliser la fonction add_image_size () de cette façon. Vérifiez l'exemple ci-dessous:

add_action( 'after_setup_theme', 'my_custom_image_sizes' );

function my_custom_image_sizes() {
if ( function_exists( 'add_image_size' ) ) {
  add_image_size( "grade-image", 320, 300, true );
 }
}

add_filter( 'image_size_names_choose', 'my_custom_sizes' );

function my_custom_sizes( $sizes ) {
return array_merge( $sizes, array(
    'grade-image' => __('Grade Image')
) );
}

Assurez-vous d'utiliser le hook 'after_setup_theme' pour éviter les erreurs d'incompatibilité.

1
David Guerreiro
add_image_size( "grade-image", 320, 300, true );

//required parameters 3 and 4
add_filter( 'image_size_names_choose', 'my_custom_sizes', 10, 1 );

function my_custom_sizes( $sizes ) {
    return array_merge( $sizes, array(
        'grade-image' => __('Grade Image'),
    ) );
}