Bonjour,
J'essaie de changer le format du nom utilisé par Wordpress pour renommer les fichiers téléchargés. Lorsque je télécharge une image dont le nom de fichier est "desert-landscape.jpg", Wordpress configure des versions à l’échelle et renomme les noms de fichiers en différentes combinaisons de "desert-landscape- {WIDTHxHEIGHT} .jpg" (en fonction de la taille des vignettes).
Existe-t-il un moyen de supprimer les attributs width et height du nom de fichier et de les remplacer par "{medium} -desert-landscape.jpg", "{large} -desert-landscape.jpg" et "{small} -desert-landscape.jpg "?
J'ai regardé ce post Renommer les images téléchargées avec une largeur dans le nom de fichier je ne parviens pas à le réparer correctement.
Je vous remercie
// The filter runs when resizing an image to make a thumbnail or intermediate size.
add_filter( 'image_make_intermediate_size', 'rename_intermediates_wpse_82193' );
function rename_intermediates_wpse_82193( $image )
{
// Split the $image path into directory/extension/name
$info = pathinfo($image);
$dir = $info['dirname'] . '/';
$ext = '.' . $info['extension'];
$name = wp_basename( $image, "$ext" );
// Build our new image name
$name_prefix = substr( $name, 0, strrpos( $name, '-' ) );
$size_extension = substr( $name, strrpos( $name, '-' ) + 1 );
$new_name = $dir . $size_extension . '-' . $name_prefix . $ext;
// Rename the intermediate size
$did_it = rename( $image, $new_name );
// Renaming successful, return new name
if( $did_it )
return $new_name;
return $image;
}
Pour être honnête, je suis un peu perplexe de constater que tout ce que vous avez essayé jusqu’à présent consiste à copier et coller une réponse qui ne signifie pas ne résout pas votre problème. D'autre part, vous avez clairement décrit votre problème. Ci-dessous, je vous présente une solution, jetez un coup d’œil aux commentaires et sources d’informations supplémentaires, si vous voulez vraiment comprendre ce qui se passe.
Code:
// The filter runs when resizing an image to make a thumbnail or intermediate size.
add_filter( 'image_make_intermediate_size', 'wpse_123240_rename_intermediates' );
function wpse_123240_rename_intermediates( $image ) {
// Split the $image path into directory/extension/name
$info = pathinfo($image);
$dir = $info['dirname'] . '/';
$ext = '.' . $info['extension'];
$name = wp_basename( $image, "$ext" );
// Get image information
// Image edtor is used for this
$img = wp_get_image_editor( $image );
// Get image size, width and height
$img_size = $img->get_size();
// Image prefix for builtin sizes
// Note: beware possible conflict with custom images sizes with the same width
$widths = [];
$size_based_img_name_prefix = '';
foreach ( get_intermediate_image_sizes() as $_size ) {
if ( in_array( $_size, [ 'thumbnail', 'medium', 'medium_large', 'large' ] ) ) {
$width = get_option( "{$_size}_size_w" );
if ( ! isset( $widths[ $width ] ) ) {
$widths[ $width ] = $_size;
}
}
}
if ( array_key_exists( $img_size[ 'width' ], $widths ) ) {
$size_based_img_name_prefix = $widths[ $img_size['width'] ] . '-';
$name_prefix = substr( $name, 0, strrpos( $name, '-' ) );
} else {
$name_prefix = $name;
}
// Build our new image name
$new_name = $dir . $size_based_img_name_prefix . $name_prefix . $ext;
// Rename the intermediate size
$did_it = rename( $image, $new_name );
// Renaming successful, return new name
if( $did_it )
return $new_name;
return $image;
}
Sources d'information:
Notes: non testé