BEAR - WooCommerce Bulk Editor and Products Manager Professional

Modifier en masse les champs personnalisés case à cocher dans WooCommerce

Pour modifier en masse un champ personnalisé de type case à cocher sur des produits WooCommerce, la valeur que BEAR écrit doit être celle que lit le plugin propriétaire du champ. Une case à cocher n'obéit à aucune norme unique : un plugin stocke 1 et 0, un autre yes et no, un troisième on ou rien du tout. Si les valeurs ne correspondent pas, le champ semble inversé : coché dans l'éditeur de produit mais désactivé dans BEAR, et décoché sur le produit dès que vous l'activez dans BEAR. Il en va de même pour les champs de type liste déroulante, qui stockent une valeur que l'éditeur n'affiche jamais. Vous trouverez ci-dessous la manière dont chaque format est stocké, comment faire écrire à BEAR exactement ce format et quel outil utiliser pour une opération en masse.

Comment les plugins stockent une case à cocher

Origine de la case à cocherCochéeNon cochée
La fonction de formulaire woocommerce_wp_checkbox() de WooCommerce, utilisée par de nombreux plugins et thèmesyesno ou vide, selon le code d'enregistrement du plugin
ACF Vrai / Faux (True / False) et de nombreux plugins sur mesure10
Une case à cocher HTML simple enregistrée telle qu'elle est envoyéeonvide ou aucune clé
Certains pluginstruefalse

Pour savoir quel format utilise un champ, cochez-le sur un produit, enregistrez, puis lisez la valeur stockée : rattachez la clé un instant comme champ champ texte (textinput), ou cherchez-la comme décrit dans trouver la clé méta d'un produit. La clé _unit_price_auto de Germanized, l'interrupteur qui active le calcul automatique du prix unitaire, en est un exemple : elle stocke yes et no.

Pourquoi le champ semble inversé dans BEAR

Un champ méta avec l'affichage case à cocher (checkbox) écrit 1 lorsqu'il est activé et 0 lorsqu'il est désactivé, et n'affiche une cellule comme activée que si la valeur stockée est 1. Pour un champ qui stocke yes :

  • Un produit dont la case est cochée dans WooCommerce apparaît comme désactivé dans BEAR, car yes n'est pas 1.
  • L'activer dans BEAR écrit 1. Le plugin cherche yes, donc la case est maintenant décochée dans l'éditeur de produit.
  • Le désactiver écrit 0, qui n'est pas non plus yes.

Rien n'est cassé dans l'un ou l'autre plugin : ils parlent avec des valeurs différentes. La solution consiste à indiquer à BEAR quelles valeurs cette clé utilise.

Modifier en masse des champs personnalisés case à cocher avec vos propres valeurs

Dans l'onglet Paramètres (Settings), sous Réglages généraux (General settings), renseignez Remplacer la valeur de la case à cocher méta (Override meta checkbox value). Chaque règle se compose de la clé méta, de deux-points, de la valeur pour l'état activé, d'un accent circonflexe et de la valeur pour l'état désactivé :

_unit_price_auto:yes^no,_hide_in_feed:yes^no,_show_badge:on^
  • Séparez les règles par des virgules, sans espace après : la clé doit correspondre exactement, et _hide_in_feed avec une espace au début est une autre clé.
  • Indiquez toujours les deux valeurs. Avec la seule première valeur, comme dans _show_badge:on, la désactivation écrit quand même 0. Pour stocker une valeur vide à l'état désactivé, terminez la règle par l'accent circonflexe, comme _show_badge:on^ ci-dessus.
  • Une cellule est affichée comme activée lorsque la valeur stockée est exactement égale à la première valeur. Yes avec une majuscule n'est pas yes.

Enregistrez les paramètres et rechargez l'éditeur. La colonne montre désormais l'état réel, et basculer une cellule écrit les valeurs du plugin. Avec la modification liée (binded editing) activée, le même basculement est appliqué à tous les produits cochés, tant que Charger les interrupteurs élégants (Load beauty switchers), dans les mêmes paramètres, reste à sa valeur par défaut, Oui (Yes). La documentation des Paramètres liste les autres options de ce bloc.

Opérations en masse sur tout le catalogue : utiliser un champ texte

Pour un champ case à cocher, l'onglet Modifier en bloc (Bulk Edit) propose une liste déroulante dans le groupe statuts et types (statuses and types), et l'onglet Filtres (Filters) propose un filtre Oui/Non. Les deux ont leurs limites :

  • Le choix Oui (Yes) de l'onglet Modifier en bloc écrit 1, ou la première valeur de remplacement. Son choix Non (No) n'écrit pas 0 ni la seconde valeur de remplacement dans la version actuelle : il enregistre 2, qu'un champ 1/0 traite comme activé et qu'un champ yes/no ne reconnaît pas.
  • Le filtre Oui/Non compare avec 1 et 0 et ignore le remplacement, donc il ne peut pas retrouver des produits par yes ou no.
  • Lorsque le commutateur variations est activé, les champs case à cocher ne sont pas du tout proposés dans l'onglet Modifier en bloc.

Pour un travail sur l'ensemble du catalogue, passez l'affichage du champ en texte le temps de l'opération. L'affichage indique seulement à BEAR comment montrer et écrire le champ ; le modifier ne touche pas aux valeurs stockées.

  1. Dans l'onglet Champs meta (Meta Fields), réglez l'affichage du champ sur champ texte (textinput) et son type sur chaîne (string), puis appuyez sur Enregistrer les champs meta (Save meta fields). La colonne affiche maintenant les valeurs brutes : yes, no, 1, 0, ou rien.
  2. Dans l'onglet Filtres, trouvez les produits à modifier avec le filtre texte du champ : comportement EXACT (=) avec yes, ou Vide (Empty) pour les produits dont le champ n'a jamais été enregistré. Un filtre sur 2 retrouve les produits touchés par une précédente opération Non (No).
  3. Dans l'onglet Modifier en bloc, cochez la ligne du champ dans le groupe texte (text), saisissez la valeur exacte, par exemple no, choisissez nouveau (new) et appuyez sur Effectuer la modification groupée (Do Bulk Edit). Avec le commutateur variations activé, cette ligne écrit aussi dans les variations.
  4. Remettez l'affichage sur case à cocher (checkbox) si vous préférez les interrupteurs pour les modifications courantes.

Beaucoup de boutiques gardent simplement leurs champs yes/no comme champs texte. Chaque opération en masse est enregistrée dans l'Historique (History) et peut être annulée.

Champs de type liste déroulante

Un champ de type liste stocke la valeur de l'option choisie, qui n'est souvent pas le libellé affiché par l'éditeur : le libellé Grande boîte peut être stocké sous la forme box_l. BEAR ne peut pas proposer la liste d'options du plugin pour un champ méta, car un champ méta est une donnée libre et cette liste n'existe que dans le code de l'autre plugin. Rattachez un tel champ comme champ texte (textinput) et chaîne (string) et saisissez la valeur stockée :

  1. Sur un produit de test, choisissez chaque option à tour de rôle, enregistrez et notez la valeur affichée par la colonne. C'est la liste des valeurs valides.
  2. Utilisez le filtre texte avec EXACT (=) pour trouver les produits ayant une option donnée, et l'onglet Modifier en bloc avec nouveau (new) pour en définir une autre.

Une valeur absente de la liste du plugin est enregistrée, mais le plugin ne la reconnaîtra pas ; sa liste affiche généralement la première option, et le front-end peut ignorer le champ. La clé _unit de Germanized est un champ de ce genre : elle contient une unité sous forme de texte, et BEAR la modifie comme du texte plutôt que comme une liste déroulante d'unités. Les champs à sélection multiple stockent une liste sérialisée ; pour ACF, consultez modifier en masse les champs ACF, et pour les autres plugins l'affichage Tableau (array) décrit dans la documentation des Champs meta.

Champs de type zone de texte

L'affichage zone de texte (textarea) stocke du texte comme le type chaîne (string) et le modifie dans une fenêtre avec l'éditeur WordPress, ce qui convient aux textes longs et au HTML. En mode visuel, l'éditeur entoure le texte brut de balises de paragraphe ; pour un champ qui doit rester brut, comme un code ou une courte note imprimée à l'intérieur d'une autre phrase, passez la fenêtre en mode texte avant d'enregistrer, ou utilisez champ texte (textinput). Un champ zone de texte a le même filtre texte et la même ligne dans Modifier en bloc qu'un champ texte.

Quel que soit l'affichage, rattachez la clé exactement telle qu'elle est stockée, de préférence à l'aide de Récupérer les clés meta d'un produit quelconque via son ID (Get meta keys from any product by its ID). La clé d'un champ rattaché ne peut pas être renommée : une autre clé correspond à d'autres données, et les valeurs enregistrées sous une clé mal saisie y restent tant que vous ne les supprimez pas.

Liste de contrôle

  • Les valeurs stockées du champ sont connues : 1/0, yes/no, on/vide, ou autre chose.
  • Les champs qui ne stockent pas 1/0 ont une règle Remplacer la valeur de la case à cocher méta (Override meta checkbox value) avec les deux valeurs et sans espaces.
  • Les opérations en masse et les filtres utilisent l'affichage texte avec la valeur exacte.
  • Les champs de type liste se modifient avec la valeur de l'option, pas avec son libellé.
  • Après un test sur deux produits, l'éditeur de produit montre la case cochée ou décochée comme prévu.

Si un champ stocke autre chose que ce qui est couvert ici, publiez la clé du champ et l'ID d'un produit sur le forum d'assistance de BEAR.