79 votes

WooCommerce: Trouver les produits dans la base de données

Je crée un site Web en utilisant WooCommerce et je veux restreindre les produits disponibles aux utilisateurs en fonction du code postal qu'ils saisissent dans le formulaire de recherche sur ma page d'accueil.

Pour pouvoir réaliser cela, je devrai spécifier les conditions de chaque produit dans la base de données de phpMyAdmin, mais je ne semble pas le trouver.

Est-ce que quelqu'un sait où se trouvent les bases de données de produits et/ou de catégories de WooCommerce dans phpmyAdmin ?

Merci d'avance.

154voto

LoicTheAztec Points 72349

Mise à jour 2020

Les produits sont principalement situés dans les tables suivantes :

  • wp_posts table avec post_type comme produit (ou variation_produit),

  • wp_postmeta table avec post_id comme index relationnel (l'ID du produit).

  • wp_wc_product_meta_lookup table avec product_id comme index relationnel (l'ID du post) | Permet des requêtes rapides sur des données spécifiques du produit (depuis WooCommerce 3.7)

  • wp_wc_order_product_lookuptable avec product_id comme index relationnel (l'ID du post) | Permet des requêtes rapides pour récupérer des produits sur des commandes (depuis WooCommerce 3.7)

Les types de produits, catégories, sous-catégories, tags, attributs et toutes les autres taxonomies personnalisées sont situés dans les tables suivantes :

  • wp_terms

  • wp_termmeta

  • wp_term_taxonomy

  • wp_term_relationships - colonne object_id comme index relationnel (l'ID du produit)

  • wp_woocommerce_termmeta

  • wp_woocommerce_attribute_taxonomies (pour les attributs de produit uniquement)

  • wp_wc_category_lookup (pour la hiérarchie des catégories de produits uniquement depuis WooCommerce 3.7)


Les types de produits sont gérés par la taxonomie personnalisée product_type avec les termes par défaut suivants :

  • simple
  • groupé
  • variable
  • externe

Certains autres types de produits pour les plugins d'Abonnements et de Réservations :

  • abonnement
  • variable-abonnement
  • réservation

Depuis Woocommerce 3+, une nouvelle taxonomie personnalisée nommée product_visibility gère :

  • La visibilité du produit avec les termes exclure-de-la-recherche et exclure-du-catalogue
  • Les produits en vedette avec le terme en-vedette
  • Le statut de stock avec le terme en-rupture-de-stock
  • Le système de notation avec les termes de noté-1 à noté-5

Fonction particulière : Chaque attribut de produit est une taxonomie personnalisée...


Références :

0 votes

Je ne parviens pas à trouver où Woocommerce stocke la relation Produit -> Vendeurs. J'essaie d'attribuer à partir du frontend un vendeur à un produit.

0 votes

@Pickeroll Cela est dû au fait que certains plugins de vendeurs ont leurs propres tables personnalisées...

0 votes

Impossible de trouver la taxonomie product_type, à quel tableau faites-vous référence ? Je n'ai pas de wp_woocommerce_attribute_taxonomies bien sûr, vérifiez avec le bon préfixe dans mon cas.

20voto

Swapnali Points 563

Les tables suivantes stockent la base de données des produits WooCommerce :

  • wp_posts -

    Le cœur des données de WordPress est constitué des publications. Il est stocké en tant que post_type comme produit ou variable_product.

  • wp_postmeta-

    Chaque publication comporte des informations appelées métadonnées et elles sont stockées dans wp_postmeta. Certains plugins peuvent ajouter leurs propres informations à cette table comme le plugin WooCommerce stocke l'product_id du produit dans la table wp_postmeta.

Les catégories de produits, sous-catégories sont stockées dans cette table :

  • wp_terms
  • wp_termmeta
  • wp_term_taxonomy
  • wp_term_relationships
  • wp_woocommerce_termmeta

La requête suivante retourne une liste de catégories de produits

SELECT wp_terms.* 
    FROM wp_terms 
    LEFT JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
    WHERE wp_term_taxonomy.taxonomy = 'product_cat';

pour plus de référence -

1voto

George-Paul B. Points 369

Obtenir les identifiants de catégorie de produit en fournissant l'ID du produit (colonne ID de wp_posts) :

SELECT
    term_taxonomy_id
FROM
    wp_term_relationships
WHERE
    object_id = PRODUCT_ID_HERE
    AND
    term_taxonomy_id IN
        (
            SELECT
                term_taxonomy_id
            FROM
                wp_term_taxonomy
            WHERE
                taxonomy LIKE 'product_cat'
        )

obtenir les données de catégorie (nom, slug) et la structure hiérarchique de la catégorie :

SELECT
    wp_terms.term_id,
    wp_terms.name,
    wp_terms.slug,
    wp_term_taxonomy.parent
FROM
    wp_terms
LEFT JOIN
    wp_term_taxonomy
    ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE
    wp_term_taxonomy.taxonomy LIKE 'product_cat'

1voto

bsun1991 Points 1

Ajouter en vrac de nouvelles catégories à Woo:

Insérer l'identifiant de la catégorie, le nom, la clé d'URL

INSERT INTO wp_terms 
VALUES
  (57, 'Pommes', 'fruit-pommes', '0'),
  (58, 'Bananes', 'fruit-bananes', '0');

Définir les valeurs du terme comme catégories

INSERT INTO wp_term_taxonomy 
VALUES
  (57, 57, 'product_cat', '', 17, 0),
  (58, 58, 'product_cat', '', 17, 0)

17 - est la catégorie parent, s'il y en a une

La clé ici est de s'assurer que le term_taxonomy_id de la table wp_term_taxonomy et le term_id de la table wp_term sont égaux

Après avoir effectué les étapes ci-dessus, allez dans l'administration de Wordpress et enregistrez une catégorie existante. Cela mettra à jour la base de données pour inclure vos catégories ajoutées en vrac

0voto

Pranav Points 156

Je recommanderais d'utiliser les champs personnalisés de WordPress pour stocker les codes postaux éligibles pour chaque produit. add_post_meta() et update_post_meta sont ce que vous recherchez. Il n'est pas recommandé de modifier la structure de table par défaut de WordPress. Tous les postmetas sont insérés dans la table wp_postmeta. Vous pouvez trouver les produits correspondants dans la table wp_posts.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X