Rechercher et remplacer en masse dans les articles WordPress, titres et SEO
Une recherche et un remplacement en masse dans les articles WordPress partent généralement d'une petite modification qui apparaît partout : la date de l'an dernier dans deux cents avis, un produit renommé dans les titres, un ancien nom de marque dans des méta-descriptions Yoast. Dans WOLF, cela se fait en deux étapes. L'onglet Filtres (Filters) trouve les articles qui contiennent le texte, et le comportement remplacer (replace) de l'onglet Édition en masse (Bulk Edit) remplace le texte dans chacun d'eux. Les deux étapes comparent le texte de manière différente, et connaître cette différence rend le travail prévisible.
Comment fonctionne la recherche et le remplacement en masse dans WOLF
La recherche et le remplacement sont deux outils distincts, avec des règles distinctes :
- La recherche est un motif de base de données. Les filtres de texte de l'onglet Filtres (Filters) comparent votre texte au titre, au contenu ou à l'extrait stocké, au sein de la requête de base de données, où certains caractères ont une signification particulière (voir l'étape 1).
- Le remplacement est une substitution de texte brut. Pour chaque article de l'opération, WOLF lit la valeur stockée, remplace chaque occurrence de votre texte, caractère pour caractère, et enregistre l'article. Il n'y a ni caractères génériques ni motifs.
Les articles concernés par l'opération sont indiqués dans l'avis en haut de l'onglet Édition en masse (Bulk Edit), L'édition en masse sera appliquée à : (Bulk editing will be applied to:). Les articles sélectionnés avec les cases à cocher de l'éditeur d'articles sont prioritaires. Sans sélection, ce sont les articles filtrés qui sont utilisés. Sans l'un ni l'autre, tous les articles du type de contenu actuel sont utilisés.
Filtrez toujours d'abord, même si le remplacement ne modifie que les articles qui contiennent le texte. Chaque article de l'opération est enregistré, y compris ceux où rien n'a été trouvé. Chacun reçoit une nouvelle Date de modification (Date modified) et une entrée dans l'Historique. Une opération filtrée ne touche que les articles qui ont réellement besoin de la modification.
Étape 1 : trouver les articles qui contiennent le texte
Ouvrez l'onglet Filtres (Filters). Les champs de texte [post] titre ... ([post] title ...), [post] contenu ... ([post] content ...), [post] extrait ... ([post] excerpt ...) et [post] slug ... ont chacun à côté une liste déroulante de comportement :
| Comportement | Trouve les articles dont le champ |
|---|---|
| LIKE | contient le texte, n'importe où |
| EXACT | est exactement le texte, rien de plus |
| NOT | ne contient pas le texte |
| BEGIN / END | commence ou se termine par le texte |
| Vide (Empty) | est vide |
Saisissez le texte, choisissez LIKE et cliquez sur Filtrer (Filter). La recherche ignore la casse. Vérifiez quelques-uns des articles trouvés avant de continuer.
Caractères à éviter dans la recherche
Techniquement, LIKE, NOT, BEGIN et END sont des expressions régulières MySQL. Les lettres, les chiffres, les espaces et les traits d'union se correspondent à eux-mêmes. Ces caractères, non : . [ ] ( ) * + ? | $ \ { }. Un point correspond à n'importe quel caractère, ce qui n'élargit que légèrement le résultat. Les crochets font plus de dégâts : dans [sc name="product-code"][/sc], ils transforment le texte en « un caractère parmi cette liste », et le filtre renvoie alors beaucoup trop d'articles, ou aucun. Recherchez plutôt une partie distinctive sans ces caractères, par exemple product-code. Évitez aussi les apostrophes et recherchez la partie de la phrase située avant ou après. Rien de tout cela ne s'applique à l'étape 2 : le remplacement n'est pas un motif, donc les crochets, les parenthèses et les points ne posent aucun problème.
Plusieurs mots, AND et NOT
Un même champ peut contenir plusieurs conditions. 2019^2020 trouve les articles qui contiennent l'une ou l'autre année. chainsaw^~2019 trouve les articles qui contiennent les deux mots. chainsaw^!2024 trouve les articles contenant « chainsaw » mais pas « 2024 ». Placez les parties avec ! à la fin. La documentation des filtres et la FAQ sur la recherche de plusieurs titres à la fois proposent d'autres exemples.
Cherchez ce qui est stocké, pas ce qui est affiché
Le filtre de contenu recherche le HTML que WordPress stocke. Dans l'éditeur de blocs, c'est ce que vous voyez dans la vue Éditeur de code (Code editor), commentaires de blocs compris. Une esperluette est généralement stockée sous la forme &, et une phrase avec un mot en gras au milieu (buy <strong>now</strong>) n'est pas le texte brut « buy now ». Il en va de même pour les shortcodes. Les cellules de titre et de contenu de l'éditeur d'articles affichent le texte stocké avec les shortcodes en texte brut, car WOLF affiche des valeurs à modifier et ne les interprète jamais. Ce texte brut est exactement celui sur lequel travaillent la recherche et le remplacement.
Étape 2 : remplacer le texte dans l'onglet Édition en masse
- Ouvrez l'onglet Édition en masse (Bulk Edit) et lisez l'avis en haut. Il doit indiquer les [post] filtrés (the filtered [post]), ou le nombre d'articles sélectionnés.
- Cochez la case du champ à modifier : titre (title), contenu (content), extrait (excerpt) ou un autre champ de texte. Les champs de saisie correspondants deviennent actifs.
- Réglez sa liste déroulante de comportement sur remplacer (replace). Une seconde ligne apparaît.
- Dans le premier champ, saisissez le texte à trouver, exactement tel qu'il est stocké.
- Sur la seconde ligne, choisissez respecter la casse (same case) ou ignorer la casse (ignore case) et saisissez le nouveau texte dans remplacer par le texte (replace to text). Laissez-le vide pour supprimer le texte trouvé.
- Cliquez sur Lancer l'édition en masse (Do Bulk Edit) et confirmez la boîte de dialogue qui liste les champs à modifier.
Respecter la casse (same case) ne remplace que les correspondances exactes : « Chainsaw » est donc laissé tel quel lorsque vous cherchez « chainsaw ». Ignorer la casse (ignore case) remplace les deux. Vous pouvez modifier plusieurs champs en une seule opération : cochez le contenu et l'extrait, chacun avec son propre texte à trouver et à remplacer.
Les listes déroulantes variable insèrent {TITLE}, {ID} et {MENU_ORDER} à l'emplacement du curseur, et elles fonctionnent dans les deux champs. WOLF les renseigne pour chaque article. Par exemple, remplacer « Lire l'avis complet » par « Lire l'avis complet de {TITLE} » nomme chaque article dans son propre texte.
| Tâche | Champ | Texte à trouver | Remplacer par le texte |
|---|---|---|---|
| Mettre à jour une année dans les articles | contenu | to buy in 2024 | to buy in 2026 |
| Renommer un produit dans les titres | titre | Model X200 | Model X300 |
| Supprimer une ligne de chaque extrait | extrait | Updated weekly. | (vide) |
Rendez le texte à trouver aussi précis que possible. « 2024 » seul modifierait aussi des prix, des numéros de modèle et des liens qui contiennent ces chiffres. Comme le remplacement est littéral, il ne peut pas traiter une valeur qui change d'un article à l'autre, comme un ID d'image différent dans chaque shortcode. Chaque chaîne distincte nécessite sa propre opération.
Remplacer du texte dans les titres SEO et les méta-descriptions Yoast SEO
Les extensions SEO conservent le titre et la description SEO personnalisés de chaque article dans les métadonnées de l'article. Yoast SEO utilise les clés _yoast_wpseo_title et _yoast_wpseo_metadesc. Pour y rechercher et remplacer du texte, transformez-les d'abord en colonnes WOLF :
- Dans l'onglet Champs méta (Meta Fields), ajoutez les deux clés avec Ajouter une clé personnalisée à la main (Add Custom key by hands). Vous pouvez aussi saisir l'ID d'un article qui a un titre SEO personnalisé sous Obtenir les clés méta de n'importe quel article par son ID (Get meta keys from any post by its ID) et conserver les clés dont vous avez besoin. Donnez-leur des titres lisibles comme « Titre SEO », réglez le type sur string et cliquez sur Enregistrer les champs méta (Save meta fields).
- Dans l'onglet Réglages (Settings), activez les deux nouvelles colonnes et cliquez sur Enregistrer tous les réglages (Save all settings). Seules les colonnes actives apparaissent dans les onglets Filtres et Édition en masse.
- Filtrez avec le nouveau filtre de texte méta et lancez remplacer (replace) sur le champ méta dans l'onglet Édition en masse (Bulk Edit), exactement comme ci-dessus.
Les filtres de texte méta fonctionnent différemment des filtres de titre et de contenu : leur LIKE est un simple « contient », donc les crochets et les points ne posent aucun problème. Plus de détails dans filtrer des articles par champ personnalisé.
Yoast ne stocke une valeur que lorsque quelqu'un a saisi un titre ou une description personnalisés pour cet article. Tous les autres articles reçoivent les leurs des modèles définis dans les réglages de Yoast, qui utilisent des variables comme %%title%% et %%sitename%%. Ces articles n'ont rien à trouver dans le champ méta : modifiez plutôt le modèle dans Yoast. Les autres extensions SEO utilisent leurs propres clés : trouvez-les avec Obtenir les clés méta de n'importe quel article par son ID (Get meta keys from any post by its ID) sur un article où vous avez défini un titre SEO personnalisé.
Exemple : retirer « (copy) » des titres d'articles dupliqués
Le bouton Dupliquer (Duplicate) de l'éditeur d'articles donne à chaque copie le titre d'origine suivi de « (copy) », traduit lorsque votre administration fonctionne dans une autre langue. Aucun réglage ne permet de désactiver ce suffixe, mais un seul remplacement le retire de toutes les copies :
- Dans l'onglet Filtres (Filters), filtrez le titre avec LIKE et le texte
copy. Ne saisissez pas(copy), car les parenthèses sont des caractères de motif. Pour exclure des titres plus anciens comme « Bases du copywriting », réglez aussi Par auteur (By author) sur vous-même et Date de publication, de (Date Published from) sur le jour de la duplication. Les copies appartiennent à l'utilisateur qui les a faites et sont datées de ce moment. - Dans l'onglet Édition en masse (Bulk Edit), activez titre (title), choisissez remplacer (replace), saisissez
(copy)avec l'espace initial, choisissez respecter la casse (same case) et laissez remplacer par le texte (replace to text) vide. - Cliquez sur Lancer l'édition en masse (Do Bulk Edit).
Les copies sont créées comme des articles publiés. S'ils ne doivent pas encore être publics, réglez le statut de l'article (post status) sur brouillon dans la même opération d'édition en masse. Leurs slugs ont été générés à partir du titre avec le suffixe, par exemple summer-sale-copy, et changer le titre ne change pas le slug d'un article publié. Lancez un remplacement sur le champ slug, ou régénérez les slugs comme décrit dans copier le titre dans le slug. WordPress garantit l'unicité des slugs : une copie de summer-sale devient donc summer-sale-2.
Tester, vérifier et annuler
- Testez d'abord sur deux ou trois articles. Sélectionnez-les avec les cases à cocher, qui sont prioritaires sur le filtre, lancez le remplacement et regardez ces articles sur le site. Désélectionnez ensuite et lancez-le sur l'ensemble filtré.
- Annulez depuis l'Historique. Chaque opération en masse est enregistrée dans l'onglet Historique (History) et peut être annulée en entier ou article par article. L'Historique couvre les modifications, pas les suppressions.
- Videz les caches de pages après l'opération si le site affiche toujours l'ancien texte.
- Le filtre a trouvé les articles mais rien n'a changé : comparez caractère par caractère votre texte à trouver avec la cellule de l'éditeur d'articles. La différence habituelle est une espace, une entité HTML, un saut de ligne ou une majuscule alors que respecter la casse (same case) est sélectionné.
- Le filtre trouve presque tout : le texte de recherche contient un caractère de motif comme
[ou(. Recherchez une partie plus courte et simple.
La documentation de l'onglet Édition en masse décrit les autres comportements de texte (ajouter à la fin (append), ajouter au début (prepend), nouvelle valeur (new)). Si un remplacement ne fait toujours pas ce que vous attendez, indiquez le champ, le texte à trouver et un exemple d'article sur le forum de support de WOLF.