logo

[PHP] Renommer les images automatiquement sur wordpress

Accueil Wordpress [PHP] Renommer les images automatiquement sur wordpress

Nous avons remarqué que nos clients uploadaient leurs images sans les renommer, telles qu’elles sont enregistrées par leur smartphone ou leur appareil photos.

Ce code permet de sélectionner un mot clé pour renommer automatiquement les photos uploadées. Le code permet aussi, de compter les images présentes dans les dossiers mensuels Upload de wordpress, afin que les photos qui ont toutes le même nom, aient un préfixe numérique différent : ex : votre-mot-cle-05.jpg

L’avantage de ce code est qu’il permet de ne pas perdre un bonne occasion de se « référencer » sur des mots clés dans Google image. Certes cela reste du « bidouillage », à nos yeux de professionnel, parce qu’ il est tellement mieux de nommer ses photos intelligemment en fonction de ce qu’elles représentent ou en appuyant sur les différents mots clés que vous avez choisi. Mais l’expérience nous montre que nos clients ne le font pas toujours. Peut être que les vôtres non plus !

Code à placer dans le fichier functions.php de votre thème (ligne 48 : changer ‘VOTRE-MOT-CLE’ par … votre mot clé !)

// Compte le nombre d'images du répertoire où sont stockées les images médias ou bien crée le dossier s'il est inexistant.

function count_images_url_file() {
    $uploads = wp_upload_dir();
    $repertoire = $uploads['path']; // On récupère notre répertoire.
    if (is_dir($repertoire)) { // On regarde s'il existe.
        if ($dh = opendir($repertoire)) {  // Si c'est le cas on le lit.
            while (($file = readdir($dh)) !== false) {
                if ($file != "." && $file != ".." ) {
                $filelist[]= $file;
            }
            }
            closedir($dh);
        }
        return count($filelist); // Et on retourne le nombre d'images présentes à l'intérieur.
    } else {
        mkdir ($repertoire); // Si le dossier n'existe pas on le crée et on retourne 0 car il ne comporte pas d'images.
        return 0;
    }
}
  
// Mise à jour du NOM de l'image lors de l'importation.
 
function change_nom_mot_cle_dur ( $filename, $prefixe) {
   $info = pathinfo( $filename ); // Analyse de notre fichier.
   $ext = empty( $info['extension'] ) ? '' : '.' . $info['extension']; // On récupère l'extension de notre fichier.
   if (function_exists('count_images_url_file')) {
       $nombre_fichier =(count_images_url_file())+1; // On récupère le nombre d'images de notre répertoire.
   } else {
       $nombre_fichier = 1; // Cas ou la fonction n'est pas trouvé.
   }
   $nom = $prefixe.$nombre_fichier; // On prépare le nom du fichier sortant.
   return $nom . $ext; // Et on le retourne avec son extension.
}
  
// Mise à jour du TITRE de l'image.
 
function change_titre_mot_cle_dur ( $image_ID, $nom ) {
$image = array ( // On modifie le titre dans cette variable.
   'ID' => $image_ID,
   'post_title' => $nom
);
   wp_update_post( $image );
}
  
// Choix du mot clé :
 
$mot_clé = 'VOTRE-MOT-CLE'; // Évitez les caractères spéciaux ("?", ":", "/", "!" etc...).
  
// Appel des deux fonctions.
 
add_filter( 'sanitize_file_name', function( $filename ) use ( $mot_clé ) {
    return change_nom_mot_cle_dur ( $filename, $mot_clé );
},1 );
 
add_action( 'add_attachment', function( $image_ID ) use ( $mot_clé ) {
    change_titre_mot_cle_dur ( $image_ID, $mot_clé );
},10);
 
do_action ( 'add_attachment');

 

Code réalisé par Valentin B. pour emandarine (2019)

Une idée ? Partagez-la !

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *