BEAR - WooCommerce Bulk Editor and Products Manager Professional

Modifier en masse les champs ACF des produits WooCommerce : dates, cases

Pour modifier en masse les champs ACF des produits WooCommerce, aucune intégration spéciale n'est nécessaire : Advanced Custom Fields enregistre chaque valeur d'un produit comme méta d'article sous le nom du champ, et BEAR modifie les méta d'article comme des colonnes de tableau. Ce qu'il faut en revanche, c'est savoir comment ACF stocke chaque type de champ, car BEAR écrit exactement la valeur que vous lui donnez. Une date au mauvais format, une case à cocher enregistrée comme texte brut ou une clé de référence manquante expliquent pourquoi une valeur peut sembler correcte dans BEAR et pourtant ne pas apparaître sur la page produit. Vous verrez ci-dessous comment rattacher correctement chaque type de champ, comment modifier des listes de cases à cocher et que vérifier quand une valeur ne s'affiche pas.

Comment ACF stocke un champ de produit

Pour un champ nommé release_date, ACF écrit deux clés meta sur le produit quand vous l'enregistrez dans l'éditeur de produit :

  • release_date contient la valeur.
  • _release_date contient la clé du champ, un code tel que field_64f0c2a1b7e3d. Cette référence indique à ACF à quelle définition de champ appartient la valeur.

BEAR modifie la première clé. La référence existe déjà sur chaque produit enregistré dans l'éditeur de produit alors que le groupe de champs lui était attribué. Les produits importés, ou qui ont reçu la valeur de BEAR avant que quiconque les enregistre avec le groupe de champs, ont la valeur mais pas la référence. Cette différence explique la plupart des valeurs qui n'apparaissent pas, comme décrit plus bas.

Rattachez toujours le nom du champ, pas le libellé affiché au-dessus du champ ni la clé du champ. Le nom est le Nom du champ (Field Name) dans les réglages du groupe de champs ACF.

Ajouter un champ ACF comme colonne

  1. Remplissez le champ sur un produit dans l'éditeur de produit et enregistrez-le.
  2. Dans l'onglet Champs meta (Meta Fields) de BEAR, saisissez l'ID de ce produit 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 appuyez sur Récupérer (Get). La liste affiche à la fois release_date et _release_date ; gardez celle sans le tiret bas. Vous pouvez aussi saisir le nom dans Ajouter une clé personnalisée à la main (Add Custom key by hands).
  3. Donnez un titre court au champ, choisissez la vue et le type dans le tableau ci-dessous, puis appuyez sur Enregistrer les champs meta (Save meta fields).
  4. Activez la nouvelle colonne dans l'onglet Paramètres (Settings) et enregistrez. C'est seulement alors que le champ apparaît dans les onglets Filtres (Filters) et Modifier en bloc (Bulk Edit).

La documentation des champs meta décrit cet onglet en détail.

Modifier en masse les champs ACF selon leur type

Type de champ ACFValeur stockéeVue et type dans BEAR
Texte, Zone de texte, E-mail, URLLe textechamp texte (textinput) ou zone de texte (textarea), chaîne (string)
Nombre, PlageLe nombrechamp texte (textinput), nombre (number)
Vrai / Faux1 ou 0case à cocher (checkbox)
Bouton radio, Groupe de boutons, Liste déroulante (une seule valeur)La valeur du choix retenu, pas son libelléchamp texte (textinput), chaîne (string)
Cases à cocher, Liste déroulante (plusieurs valeurs)Une liste sérialisée de valeurs de choixchamp texte (textinput), chaîne (string), plus le code d'enregistrement ci-dessous
Sélecteur de date20261231 (Ymd)champ texte (textinput), chaîne (string) ou nombre (number), jamais calendrier (calendar)
Sélecteur de date et heure2026-12-31 18:00:00champ texte (textinput), chaîne (string)
Image, FichierL'ID de la pièce jointechamp texte (textinput), nombre (number)
GroupeChaque sous-champ sous groupname_subfieldnameRattachez chaque sous-champ séparément
RépéteurLe nombre de lignes sous le nom, les lignes sous name_0_subfield, name_1_subfieldVoir l'édition en masse des champs répéteurs ACF

Les dates affichent 1970

La vue calendrier (calendar) de BEAR est conçue pour les dates stockées sous forme d'horodatage Unix, un nombre de secondes. Le sélecteur de date d'ACF enregistre 20261231 quel que soit le format d'affichage choisi dans les réglages du champ ; lu comme des secondes, ce nombre correspond à un jour d'août 1970, ce qu'affiche la cellule calendrier (une valeur de sélecteur de date et heure devient le 1er janvier 1970). Choisir une date dans cette cellule enregistrerait un horodatage : le champ finirait par contenir des dates dans deux formats, et tout ce qui le trie ou le compare, comme une requête sur les dates à venir, les traiterait de travers.

Rattachez les dates ACF avec la vue champ texte (textinput) et saisissez-les comme ACF les stocke : 20261231. Avec le type nombre (number), la colonne se trie aussi par date et se filtre par une plage de/à, par exemple 20261201 à 20261231 pour décembre. Un champ Sélecteur de date et heure demande la valeur complète 2026-12-31 18:00:00 sous forme de chaîne.

Vrai/Faux et champs à deux choix

Un champ Vrai / Faux stocke 1 ou 0, exactement ce qu'écrit la vue case à cocher (checkbox) de BEAR : la cellule du tableau fonctionne donc sans rien d'autre. Une exception dans BEAR 2.2.4 : dans l'onglet Modifier en bloc, choisir Non (No) pour un champ case à cocher enregistre la valeur 2, qu'ACF lit comme vraie. Pour désactiver un tel champ sur de nombreux produits, changez momentanément sa vue dans l'onglet Champs meta en champ texte (textinput) avec le type nombre (number), réglez-le sur 0 dans l'onglet Modifier en bloc, puis remettez la vue sur case à cocher (checkbox). Le Oui (Yes) en masse fonctionne comme prévu. Un champ radio à deux choix, comme in_season et out_of_season, peut aussi utiliser la case à cocher : dans l'onglet Paramètres, sous Réglages généraux (General settings), renseignez Remplacer la valeur de la case à cocher méta (Override meta checkbox value) avec season_status:in_season^out_of_season. Une case cochée enregistre alors la première valeur et une case décochée la seconde ; séparez plusieurs champs par des virgules. Les champs avec davantage de choix utilisent un champ chaîne (string) où vous saisissez la valeur du choix.

Champs à cases à cocher et à sélection multiple

ACF enregistre une liste de cases à cocher sous forme de tableau sérialisé, alors qu'un champ texte de BEAR enregistre du texte. Saisissez les valeurs des choix séparées par des virgules, par exemple pdf, epub, print, et ajoutez un gestionnaire d'enregistrement qui transforme le texte en tableau attendu par ACF. La FAQ sur les champs de sélection et de sélection multiple ACF montre la version de base ; celle ci-dessous enregistre aussi un choix unique sous forme de liste, comme le fait ACF, et écrit la clé de référence.

/*
 * BEAR + ACF: save comma-separated choices typed in BEAR as the array used by
 * ACF checkbox and multi-select fields, and write the ACF field reference.
 * Child theme functions.php or a code snippets plugin.
 * List each field as 'field_name' => 'ACF field key'.
 */
add_filter('update_post_metadata', function ($check, $object_id, $meta_key, $meta_value) {
    $acf_list_fields = array(
        'product_formats' => 'field_64f0c2a1b7e3d',
    );

    if (!isset($acf_list_fields[$meta_key]) || !is_string($meta_value) || '' === trim($meta_value)) {
        return $check;
    }

    $choices = array_values(array_filter(array_map('trim', explode(',', $meta_value)), 'strlen'));
    update_post_meta($object_id, $meta_key, $choices);
    update_post_meta($object_id, '_' . $meta_key, $acf_list_fields[$meta_key]);

    return true;
}, 10, 4);

ACF enregistre lui-même des tableaux, pas du texte : le gestionnaire laisse donc l'éditeur de produit tranquille, et une cellule vidée est enregistrée comme vide. Si vous utilisez déjà la version de la FAQ pour un champ, remplacez-la par celle-ci au lieu d'exécuter les deux. Utilisez les valeurs des choix, pas les libellés. Dans l'onglet Modifier en bloc, utilisez nouveau (new) : ajouter à la fin (append) et ajouter au début (prepend) ajoutent du texte à la liste stockée et ne fonctionnent pas pour ces champs.

Pour trouver la clé du champ, rattachez momentanément _product_formats comme champ chaîne (string) : sur les produits enregistrés dans l'éditeur de produit, sa colonne affiche le code field_.

La valeur est enregistrée mais n'apparaît pas sur la page produit

Quand BEAR affiche la nouvelle valeur et que la page produit ne l'affiche pas, vérifiez ces causes dans l'ordre.

  1. Le format. Comparez la valeur stockée avec le tableau ci-dessus : une liste déroulante enregistrée avec son libellé au lieu de sa valeur, ou une liste de cases à cocher enregistrée comme texte brut, ne correspond à aucun des choix du champ, et une date enregistrée comme horodatage n'est pas au format qu'écrit ACF.
  2. La référence. Les produits sans la clé _fieldname ont toujours la valeur, et le get_field() d'ACF peut en général trouver le champ par son nom. Le code qui s'appuie sur la référence peut ne pas reconnaître la valeur ; les extensions de filtre et de recherche qui lisent les champs ACF, comme FacetWP, en sont le cas typique. Vous pouvez ajouter la référence sans code. Rattachez _release_date comme champ chaîne (string), lisez la clé du champ sur un produit enregistré dans l'éditeur, puis, dans l'onglet Modifier en bloc, définissez-la avec nouveau (new) pour tous les produits qui utilisent le champ. La clé est la même pour chaque produit.
  3. Caches et index. Videz le cache de pages et tout cache d'objets. Après chaque modification, BEAR exécute les actions habituelles save_post et woocommerce_update_product, que la plupart des extensions d'indexation écoutent ; si une extension de filtre comme FacetWP affiche encore d'anciennes données, relancez une fois sa réindexation.

Les répéteurs ont des références pour le répéteur et pour chaque ligne de sous-champ, ce qui explique pourquoi un répéteur modifié uniquement via les clés de ses sous-champs n'apparaît souvent en façade qu'après un enregistrement manuel du produit. La FAQ sur les répéteurs mentionnée plus haut résout cela avec le update_field() d'ACF.

Champs ACF sur les variations

Les règles d'emplacement d'ACF ne placent pas les groupes de champs sur les variations de produits ; les extensions qui le font enregistrent les valeurs comme méta de chaque variation. Saisissez l'ID d'une variation dans Récupérer les clés meta d'un produit quelconque via son ID (Get meta keys from any product by its ID) pour voir leurs clés, rattachez-les comme n'importe quel autre champ et activez variations dans le panneau d'outils pour les modifier. Les lignes texte et nombre de l'onglet Modifier en bloc écrivent alors dans les variations. Deux limites s'appliquent dans ce mode : les filtres de champs meta portent sur les produits parents, et les champs avec la vue case à cocher (checkbox) ne sont pas proposés dans l'onglet Modifier en bloc.

Avant une exécution en masse sur des champs ACF

  • Le champ est rattaché par son nom, avec la vue et le type du tableau.
  • Les dates sont saisies sous la forme 20261231, jamais choisies dans une cellule calendrier.
  • Les champs à cases à cocher et à sélection multiple ont le gestionnaire d'enregistrement, et les exécutions utilisent nouveau (new).
  • Les produits créés en dehors de l'éditeur de produit ont la référence _fieldname.
  • Un test sur deux produits montre la valeur sur la page produit ; une exécution erronée peut être annulée dans l'onglet Historique (History).

Si un type de champ ACF n'est pas traité ici, indiquez le type de champ et l'ID d'un produit sur le forum de support de BEAR.