Modifier en masse les étiquettes et marques de produits WooCommerce
Modifier en masse les étiquettes ou les marques de produits WooCommerce paraît simple, jusqu'à ce que la liste s'allonge : ajouter une étiquette à deux cents produits, retirer toutes les étiquettes d'un catalogue étiqueté par un ancien import, donner la bonne marque à toute une gamme de produits, ou remplir une taxonomie de marques à partir d'un attribut Marque. Les étiquettes et les marques sont des taxonomies : dans BEAR, elles fonctionnent donc comme les catégories, avec quelques différences qui décident si une exécution fait ce que vous attendez. Vous trouverez ci-dessous les opérations sur les étiquettes, les moyens les plus rapides de supprimer des étiquettes en masse, la gestion des marques de WooCommerce et des extensions de marques courantes, ainsi qu'un extrait de code pour copier un attribut dans une taxonomie de marques.
Modifier en masse les étiquettes de produits WooCommerce dans l'onglet Modifier en bloc
Dans l'onglet Modifier en bloc (Bulk Edit), chaque taxonomie de produit a sa propre ligne : Catégories, Étiquettes, Marques et les taxonomies d'autres extensions. Cochez sélectionnez-le pour l'utiliser (select it to use) à côté de la ligne Étiquettes, choisissez les étiquettes dans la liste et sélectionnez un comportement :
- ajouter à la fin (append) ajoute les étiquettes sélectionnées et conserve celles qui existent. Un produit ne peut pas porter deux fois la même étiquette : relancer l'opération ne change donc rien.
- remplacer (replace) fait des étiquettes sélectionnées les seules étiquettes de chaque produit.
- retirer (remove) détache les étiquettes sélectionnées et laisse les autres.
L'opération s'applique aux produits que vous avez cochés sur la page en cours ou, si aucun n'est coché, aux produits restants après filtrage dans l'onglet Filtres (Filters), ou à toute la boutique en l'absence de filtre. Les exemples pas à pas de l'édition en masse des catégories fonctionnent de la même façon avec la ligne Étiquettes. Chaque exécution sur une taxonomie est enregistrée dans l'onglet Historique (History) et peut être annulée.
Deux points sont propres aux étiquettes :
- Un remplacement vide ne fait rien aux étiquettes. Si vous cochez la ligne Étiquettes, ne sélectionnez rien et choisissez remplacer (replace), les produits gardent leurs étiquettes. Pour les taxonomies hiérarchiques comme les Catégories et les Marques de WooCommerce, le même remplacement vide retire tous leurs termes aux produits : ne laissez donc jamais une ligne de taxonomie cochée sans sélection. Pour effacer les étiquettes, utilisez les méthodes de la section suivante.
- La liste n'affiche que les étiquettes existantes. Créez une nouvelle étiquette sous Produits → Étiquettes, ou avec créer un nouveau terme (create new term) dans la fenêtre des étiquettes de l'Éditeur de produits (Products Editor) ; elle apparaît aussitôt dans la liste de Modifier en bloc.
Supprimer toutes les étiquettes des produits WooCommerce
La méthode adaptée dépend du nombre d'étiquettes et du sort que vous réservez aux étiquettes elles-mêmes.
Détacher toutes les étiquettes, en gardant les étiquettes dans la boutique
Avec une courte liste d'étiquettes, cochez la ligne Étiquettes, sélectionnez toutes les étiquettes et lancez retirer (remove). La liste de Modifier en bloc n'a pas de bouton qui sélectionne tous les termes : avec des centaines d'étiquettes, passez donc par une étiquette temporaire. Il faut une exécution et une suppression, quel que soit le nombre d'étiquettes :
- Créez une étiquette telle que tmp-clear sous Produits → Étiquettes.
- Sélectionnez les produits, cochez la ligne Étiquettes, sélectionnez uniquement tmp-clear et lancez remplacer (replace). Chaque produit a désormais cette seule étiquette et aucune autre.
- Supprimez tmp-clear sous Produits → Étiquettes. Supprimer un terme le détache de tous les produits : les produits se retrouvent donc sans étiquette.
L'étape 2 figure dans l'Historique : si la sélection était mauvaise, vous pouvez l'annuler et récupérer les anciennes étiquettes. Faites-le avant l'étape 3 si quelque chose vous semble anormal.
Supprimer complètement les étiquettes de la boutique
Si les étiquettes elles-mêmes ne sont plus voulues, aucune modification en masse n'est nécessaire : sous Produits → Étiquettes, cochez les étiquettes, choisissez supprimer (Delete) dans les actions groupées et appliquez. WordPress les détache de tous les produits. Cela supprime les termes avec leurs descriptions et leurs pages d'archive, et l'Historique de BEAR ne peut pas les restaurer.
Retirer une étiquette d'une partie du catalogue
Filtrez par l'étiquette dans l'onglet Filtres, ajoutez une autre condition (une catégorie, une fourchette de prix, un mot du titre), puis lancez retirer (remove) avec cette étiquette dans la ligne Étiquettes. Les produits hors du filtre la gardent.
Remplacer ou fusionner des étiquettes
Pour renommer une étiquette sur tous les produits, modifiez son nom sous Produits → Étiquettes ; les produits pointent vers le terme, rien d'autre n'est à changer. Pour fusionner t-shirt dans tshirt : filtrez par t-shirt, lancez ajouter à la fin (append) avec tshirt, puis retirer (remove) avec t-shirt et le même filtre, ou supprimez-la sous Produits → Étiquettes. Une ligne porte un seul comportement par exécution : cela demande donc toujours deux étapes.
Effacer les étiquettes dans le tableau avec la modification liée
Cliquer sur une cellule Étiquettes dans l'Éditeur de produits (Products Editor) ouvre une fenêtre avec une recherche rapide, un filtre sélectionnés uniquement (selected only) et une case Sélectionner tous les termes (Select all terms) qui coche ou décoche toutes les étiquettes d'un coup. Avec la modification liée (binded editing) activée et plusieurs produits cochés, l'ensemble d'étiquettes que vous appliquez est écrit sur tous, en remplaçant leurs propres étiquettes. Cela fonctionne tant qu'au moins une étiquette reste cochée. Dans la version 2.2.4, un ensemble vide n'efface que le produit dont vous avez modifié la cellule ; les autres produits cochés gardent leurs étiquettes. Pour effacer les étiquettes de nombreux produits, utilisez l'onglet Modifier en bloc comme décrit plus haut.
Attribuer des marques en masse dans WooCommerce
BEAR n'a pas de liste d'extensions de marques prises en charge, car il n'en a pas besoin : chaque taxonomie enregistrée pour les produits y apparaît automatiquement, comme filtre, comme ligne de l'onglet Modifier en bloc et comme colonne activable dans l'onglet Paramètres (Settings). La plupart des solutions de marques stockent les marques dans une telle taxonomie :
| Marques fournies par | Taxonomie |
|---|---|
| WooCommerce Brands, intégré à WooCommerce depuis la version 9.6 | product_brand |
| YITH WooCommerce Brands Add-on | yith_product_brand |
| Perfect Brands WooCommerce | pwb-brand |
Pour toute autre extension, ouvrez sa liste de marques dans l'administration : l'adresse contient taxonomy= suivi du nom de la taxonomie. Si les marques de l'extension y apparaissent, BEAR les modifie comme des étiquettes. Pour attribuer des marques en masse :
- Sélectionnez les produits qui appartiennent à la marque : filtrez par un mot du titre, par un SKU qui commence par le préfixe de la marque, par une catégorie ou un champ fournisseur, ou cochez-les.
- Dans l'onglet Modifier en bloc, cochez la ligne des marques, sélectionnez la marque et choisissez remplacer (replace) si un produit doit avoir exactement une marque, ou ajouter à la fin (append) pour l'ajouter à celles qui existent.
- Activez la colonne des marques pour vérifier le résultat, ou filtrez par la marque.
Pour trouver les produits qui n'ont encore aucune marque, utilisez l'opérateur NOT EXISTS sur la taxonomie des marques, décrit dans trouver les produits sans catégorie ni marque. Les nouvelles marques, avec leurs logos et leurs descriptions, se créent dans l'écran propre à l'extension de marques ; BEAR les attribue.
Deux autres configurations existent. Certains thèmes et extensions conservent la marque dans un champ méta de produit : rattachez sa clé dans l'onglet Champs méta (Meta Fields), comme l'explique trouver une clé méta de produit. De nombreuses boutiques utilisent un attribut global tel que Marque (pa_brand) ; c'est une ligne d'attribut dans BEAR, traitée dans l'ajout d'attributs en masse.
Copier un attribut Marque dans une taxonomie de marques
Un cas courant : le flux du fournisseur remplit l'attribut pa_brand, et l'extension de marques a besoin de la même valeur dans sa propre taxonomie. Un terme d'attribut et un terme de marque sont des objets distincts dans des taxonomies distinctes, et l'onglet Modifier en bloc attribue des termes fixes au lieu de les copier : il n'existe donc pas d'opération BEAR unique pour cela. Avec quelques marques, procédez marque par marque : dans l'onglet Filtres, sélectionnez une valeur de l'attribut Marque, puis lancez ajouter à la fin (append) avec la marque correspondante dans l'onglet Modifier en bloc. Un filtre et une exécution par marque.
Avec des dizaines de marques ou un import quotidien, un script ponctuel est plus rapide. Il lit l'attribut Marque de chaque produit, crée une marque du même nom si elle n'existe pas encore, et l'attribue :
/*
* One-off: give every product the brand named like its Brand attribute.
* Child theme functions.php or a code snippets plugin. As an administrator open
* /wp-admin/?copy_attribute_to_brand=1, then =2, =3 and so on until it reports
* 0 products. Remove the snippet afterwards.
*/
add_action( 'admin_init', function () {
if ( empty( $_GET['copy_attribute_to_brand'] ) || ! current_user_can( 'manage_woocommerce' ) ) {
return;
}
$from = 'pa_brand'; // the attribute to read
$to = 'product_brand'; // the brand taxonomy: product_brand, pwb-brand, yith_product_brand...
$replace = true; // false keeps the brands a product already has
$page = max( 1, (int) $_GET['copy_attribute_to_brand'] );
$ids = get_posts(
array(
'post_type' => 'product',
'post_status' => 'any',
'fields' => 'ids',
'posts_per_page' => 500,
'paged' => $page,
'orderby' => 'ID',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => $from,
'operator' => 'EXISTS',
),
),
)
);
$updated = 0;
foreach ( $ids as $id ) {
$names = wp_get_post_terms( $id, $from, array( 'fields' => 'names' ) );
if ( is_wp_error( $names ) || empty( $names ) ) {
continue;
}
$brand_ids = array();
foreach ( $names as $name ) {
$term = term_exists( $name, $to );
if ( ! $term ) {
$term = wp_insert_term( $name, $to );
}
if ( is_array( $term ) ) {
$brand_ids[] = (int) $term['term_id'];
}
}
if ( $brand_ids ) {
wp_set_object_terms( $id, $brand_ids, $to, ! $replace );
++$updated;
}
}
wp_die( esc_html( sprintf( 'Page %d: %d products updated.', $page, $updated ) ) );
} );
- Réglez d'abord
$fromet$tosur les noms de votre attribut et de votre taxonomie de marques. Le script travaille par pages de 500 produits, ce qui évite aux grands catalogues d'atteindre la limite de temps du serveur. - Il ne lit que les attributs globaux. Les valeurs saisies sur un seul produit sont des attributs personnalisés, pas des termes de taxonomie ; convertissez-les d'abord en attributs globaux.
- Le script écrit directement : l'Historique de BEAR ne l'enregistre donc pas. Faites une sauvegarde de la base de données avant la première page.
- Après chaque import, relancez-le ; avec
$replacelaissé surtrue, un produit dont l'attribut Marque a changé reçoit la nouvelle marque au lieu d'une seconde.
Un hook sur les modifications d'attributs de BEAR n'est pas un substitut : dans l'onglet Modifier en bloc, les modifications d'attributs ne passent pas par woobe_before_update_product_field, et les attributs remplis par un import ne touchent jamais BEAR.
Étiquettes et marques dans la version gratuite
Dans la version gratuite, seule la ligne Catégories des taxonomies participe aux opérations de Modifier en bloc. Les lignes des étiquettes et des marques s'affichent dans des cadres rouges sans la case sélectionnez-le pour l'utiliser (select it to use), et la modification liée de ces colonnes est refusée avec un avertissement. Vous trouverez le détail complet dans les limites de la version gratuite.
Si cela ne fonctionne pas
- La ligne des marques est absente. L'extension n'enregistre pas ses marques comme taxonomie de produit ; cherchez un champ méta ou un attribut, comme décrit plus haut. Pour un gestionnaire de la boutique, vérifiez aussi que la colonne est visible pour le gestionnaire de la boutique (visible for the shop manager) dans l'onglet Paramètres.
- Les étiquettes n'ont pas disparu. Un remplacer (replace) vide et la modification liée sans étiquette cochée n'effacent pas les étiquettes des autres produits ; utilisez retirer (remove) ou l'étiquette temporaire.
- Trop de produits ont été modifiés. L'exécution a touché tous les produits filtrés ou toute la boutique parce qu'aucun produit n'était coché ; ouvrez l'Historique et annulez l'enregistrement.
Si une exécution sur une étiquette ou une marque ne donne toujours pas le résultat attendu, ouvrez un sujet sur le forum de support de BEAR en indiquant le nom de la taxonomie, le comportement choisi et l'ID d'un produit.