Comment trouver la clé meta d'un produit WooCommerce et modifier ses champs en masse
Pour modifier en masse un champ qu'une autre extension ou votre thème a ajouté aux produits WooCommerce, BEAR a besoin de la clé meta du champ : le nom sous lequel WordPress stocke la valeur dans la table wp_postmeta. Le libellé affiché sur l'écran du produit n'est pas la clé, et l'id de l'input que vous voyez dans l'inspecteur du navigateur non plus. Une fois la clé en main, vous la rattachez dans l'onglet Champs meta et le champ devient une colonne comme les autres. Vous trouverez ci-dessous quatre façons de trouver la clé meta d'un produit WooCommerce, comment choisir la bonne vue pour elle, pourquoi les variations peuvent demander une seconde clé, et comment reconnaître les champs qui ne sont pas du tout des meta.
Comment trouver la clé meta d'un produit WooCommerce
1. Demander à BEAR les clés d'un produit
- Ouvrez un produit, remplissez le champ avec une valeur que vous reconnaîtrez, par exemple
TEST-777, et cliquez sur Mettre à jour (Update). De nombreuses extensions ne stockent rien tant qu'un champ n'a pas de valeur : un produit non touché peut donc ne pas encore avoir la clé. - Notez l'ID du produit : il figure dans la colonne ID de BEAR et dans l'adresse de l'écran de modification (
post=123). - Dans l'onglet Champs meta, saisissez l'ID dans Récupérer les clés meta d'un produit quelconque via son ID (Get meta keys from any product by its ID) et cliquez sur Récupérer (Get). Chaque clé meta de ce produit est ajoutée à la liste, à l'exception des clés propres à WooCommerce comme le prix, le SKU, le stock et les images, qui sont des colonnes intégrées.
- Repérez le préfixe de l'extension dans les noms. Si plusieurs clés peuvent convenir, gardez-les toutes pour l'instant, cliquez sur Enregistrer les champs meta (Save meta fields), activez les colonnes dans l'onglet Paramètres, et voyez quelle colonne affiche
TEST-777. Supprimez ensuite les autres lignes dans l'onglet Champs meta.
Les clés qui commencent par un tiret bas sont normales : WordPress masque ces clés dans sa propre boîte Champs personnalisés, et de nombreuses extensions les utilisent volontairement. ACF est un cas particulier avec une paire de clés, name et _name ; l'article sur la modification en masse des champs ACF explique laquelle utiliser. Si aucune nouvelle clé n'apparaît après que vous avez rempli le champ, la valeur n'est pas stockée comme meta de produit ; voir plus bas la section sur les champs qui ne sont pas des meta.
2. Lire le nom du champ dans le formulaire du produit
Faites un clic droit sur le champ de l'écran de modification du produit et choisissez Inspecter. L'attribut name de l'input est souvent la clé meta, surtout pour les champs construits avec les fonctions de formulaire de WooCommerce. L'attribut id n'est pas fiable : un id comme location_0 est un élément de formulaire, et le rattacher dans BEAR donne une colonne vide. Les noms avec crochets, tels que variable_custom_note[0] ou quantity_rules[0][max], décrivent le formulaire, pas la base de données : [0] est la ligne d'une variation et [max] une partie d'un tableau. N'utilisez le nom que comme indice et confirmez-le avec la méthode 1.
3. Regarder dans la base de données
Avec phpMyAdmin ou Adminer depuis le panneau d'hébergement, cette requête en lecture seule liste chaque clé et chaque valeur d'un produit (remplacez wp_ si $table_prefix dans wp-config.php indique autre chose, et 123 par l'ID du produit) :
SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id = 123;
Avec WP-CLI, wp post meta list 123 affiche la même chose. Contrairement à la méthode 1, les deux montrent les valeurs, ce qui vous renseigne sur la manière dont les données sont stockées.
4. Demander à l'auteur de l'extension
La documentation ou l'assistance de l'extension qui possède le champ peut indiquer la clé et le format. Posez les deux questions : quelle clé, et à quoi ressemble une valeur stockée.
Choisir la vue d'après la valeur stockée
BEAR écrit exactement ce que vous lui donnez : la vue et le type dans l'onglet Champs meta doivent donc correspondre à ce que stocke l'extension propriétaire.
| La valeur stockée ressemble à | Vue et type dans BEAR |
|---|---|
| Du texte, un code, une URL | champ texte (textinput), chaîne (string) |
Un prix ou une quantité, comme 12.50 | champ texte, nombre (number) (tri, filtre de/à, augmenter de %) |
1 ou 0 | case à cocher (checkbox) ; pour yes/no, voir champs personnalisés à case à cocher |
| Un texte long ou du HTML | zone de texte (textarea) |
Un nombre à dix chiffres comme 1767225600 (un horodatage Unix) | calendrier (calendar) |
a:2:{i:0;s:3:"red";...} (un tableau PHP sérialisé) | Tableau (array), voir meta sérialisées |
| Une liste sérialisée d'ID d'images | galerie (gallery), voir images de variations et galeries |
Du texte JSON, comme {"min":1,"max":5} | champ texte ou zone de texte, à modifier avec précaution : la vue Tableau enregistre un tableau PHP, qui n'est pas le format écrit par l'extension |
Si une valeur contient plusieurs réglages dans un seul tableau, rattachez la clé de base avec la vue Tableau, pas une clé avec des crochets. La documentation des champs meta décrit l'onglet lui-même.
Les variations peuvent utiliser une autre clé
Une extension peut stocker le même réglage sous une clé pour les produits simples et sous une autre clé pour les variations, par exemple un texte de stock personnalisé conservé dans une clé pour les produits et dans une seconde clé pour les variations. Modifier la première clé sur les variations ne change alors rien de ce que l'extension lit. Activez variations dans le panneau d'outils, copiez l'ID d'une variation depuis la colonne ID et lancez Récupérer les clés meta d'un produit quelconque via son ID avec celui-ci. Rattachez aussi la clé de variation, et modifiez-la avec l'interrupteur des variations activé. Les lignes de texte et de nombre de l'onglet Modification groupée écrivent alors dans les variations ; les filtres de champs meta portent sur les produits parents : sélectionnez donc les variations par leurs attributs, comme dans filtrer les variations par attribut.
Les champs qui ne sont pas des meta de produit
- Les taxonomies. Un champ qui propose une liste de termes avec des cases à cocher, comme les marques ou certaines catégories de flux, est généralement une taxonomie. BEAR affiche les taxonomies de produits dans la liste des colonnes de l'onglet Paramètres, comme décrit dans taxonomies personnalisées. Certaines extensions enregistrent une taxonomie mais conservent leurs vraies données dans des meta ; si modifier la colonne de la taxonomie n'a aucun effet, cherchez une clé meta.
- Les tables personnalisées. Certaines extensions conservent les données de produit dans leurs propres tables. Aucune clé meta ne les atteint : le champ doit donc être modifié depuis les écrans de cette extension, comme pour le prix d'achat d'ATUM dans modifier en masse le coût des marchandises.
- Les réglages et les valeurs calculées. Une valeur définie une fois pour toute la boutique ou pour une catégorie vit dans les options, et certaines valeurs sont calculées à chaque affichage de page. Ni l'une ni l'autre n'appartient à un produit.
Les valeurs que l'autre extension remet à leur état précédent
BEAR enregistre une valeur meta puis exécute save_post, save_post_product, edit_post et woocommerce_update_product (woocommerce_update_product_variation pour une variation), les notifications que WordPress et WooCommerce envoient lorsqu'un produit est enregistré. Il ne soumet pas le formulaire de modification du produit. Deux types d'extensions réagissent à cela différemment d'un enregistrement manuel :
- Les extensions qui n'effectuent leur travail supplémentaire que lorsque le formulaire est soumis, par exemple créer des enregistrements de pièces jointes ou recalculer un planning, ne s'exécutent pas. La meta est enregistrée, mais les autres données de l'extension ne sont pas créées, et le champ semble sans effet tant que quelqu'un n'a pas cliqué sur Mettre à jour sur le produit.
- Les extensions qui vérifient leurs données à chaque enregistrement d'un produit peuvent écraser la valeur selon leurs propres règles : une extension de précommande ou de date de livraison peut réinitialiser un indicateur, ou effacer une date qui n'a pas de statut correspondant.
Pour savoir de quoi l'extension a besoin, lancez Récupérer les clés meta (Get meta keys) sur un produit avant et après avoir modifié le réglage à la main, et comparez les clés et les valeurs. Souvent, un réglage visible correspond à deux ou trois clés qui doivent être définies ensemble. Si l'extension réinitialise encore la valeur, son auteur est le seul à pouvoir dire quelles données elle attend.
Des nombres à la place des noms, des URL cassées
- Un nombre là où vous attendiez un nom. Une colonne meta affiche la valeur stockée telle quelle. De nombreux champs stockent des ID : un ID de catégorie (la catégorie principale de Yoast
_yoast_wpseo_primary_product_cat), un ID de pièce jointe pour une image ou un fichier, un ID d'utilisateur pour un vendeur, des ID de produits pour des produits liés. Modifiez-les en saisissant l'ID. Pour voir les noms des catégories, utilisez plutôt la colonne de taxonomie. - Une URL qui finit vide ou sous forme de tableau. Une cellule de texte lit un signe pourcent suivi de deux caractères parmi 0–9 et A–F, comme dans
%D0%BFou%20, comme des données de formulaire encodées en URL, et la valeur n'est pas enregistrée comme texte. Les navigateurs copient les adresses contenant des lettres non latines sous cette forme encodée. Collez plutôt l'adresse lisible, avec les vraies lettres.
Supprimer une ligne dans l'onglet Champs meta ne retire que la colonne de BEAR ; les valeurs restent sur les produits. La clé d'un champ rattaché ne peut pas non plus être renommée : une autre clé correspond à d'autres données, et les anciennes valeurs restent sous l'ancienne clé. Pour vider un champ sur de nombreux produits, voir définir une valeur vide.
Liste de contrôle pour un nouveau champ d'extension
- Le champ a été rempli sur un produit et la clé a été confirmée avec Récupérer les clés meta d'un produit quelconque via son ID.
- La vue et le type correspondent à la valeur stockée.
- Les variations ont été vérifiées pour une clé qui leur serait propre.
- Un test de modification sur un produit affiche la nouvelle valeur sur l'écran de modification du produit et sur la page du produit.
Si la clé ou son format restent flous, indiquez le nom de l'extension et l'ID d'un produit sur le forum d'assistance de BEAR.