J'essaie de changer le format de nom utilisé par WordPress pour renommer les fichiers téléchargés. Par exemple, lorsque je télécharge une image portant le nom de fichier cat-picture.jpg
, WordPress crée des versions à l’échelle et renomme le nom de fichier en variantes de cat-picture-{WIDTHxHEIGHT}.jpg
. Existe-t-il un moyen de déplacer cet attribut width & height au début du nom de fichier afin d'obtenir des variations de {WIDTHxHEIGHT}-cat-picture.jpg
? Donc, dans le contexte de cet exemple, j'aimerais que le nom de fichier soit renommé 600x400-cat-picture.jpg
. Pensées?
J'ai regardé ce post et ce post , mais je suis incapable de trouver une solution qui fonctionne. Voici mon code:
add_filter( 'wp_handle_upload_prefilter', 'modify_uploaded_file_names', 20);
function modify_uploaded_file_names( $image ) {
// Get default name of uploaded file and set to variable
$imagename = $image['name'];
// Case switch for multiple file extensions
switch ( $image['type'] ) {
case 'image/jpeg' :
$suffix = 'jpg';
break;
case 'image/png' :
$suffix = 'png';
break;
case 'image/gif' :
$suffix = 'gif';
break;
}
// Get size of uploaded image and assign to variable
$imagesize = getimagesize($image);
// Re-structure uploaded image name
$image['name'] = "{$imagesize[0]}x{$imagesize[1]}-{$imagename}.{$suffix}";
return $image;
}
J'ai réussi à le faire avec le filtre image_make_intermediate_size
.
Tous les path/filename.extension
démembrement et refonte pourraient probablement être optimisés ou réalisés en un seul geste, mais hélas, je vais laisser cela au lecteur:
// 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;
}