Je recherche l'emplacement des prix d'un produit en fonction de l'option choisie par l'utilisateur dans le prix du produit. Par exemple, cette boutique WooCommerce permet de sélectionner les prix qui changent en fonction de la sélection de l'utilisateur.
Je veux savoir où sont les prix pour différentes options stockées dans DB.
Merci
Toutes les données telles que différent les prix d’un type de message personnalisé sont stockées (pour chaque produit) dans table postmeta .
Pour trouver le post id de tous les produits, vous devez utiliser cette requête sur posts table :
SELECT * FROM 'posts' WHERE 'post_type' = 'product'
Pour chaque produit id (post_id
), vous pouvez récupérer toutes les données associées à cette requête sur postmeta table :
SELECT * FROM 'postmeta' WHERE 'post_id' = nnnn
(nnnn est le numéro id (post_id
) d'un produit)
Vous obtiendrez la liste de toutes les propriétés du produit metakey
et metavalues
.
Pour le prix associé meta_key
(s) que vous avez, par exemple:
- _regular_price
- _sale_price
- _price
-…
Pour obtenir une valeur particulière d'un produit meta_key, vous pouvez utiliser la fonction wordpress:
get_post_meta($post_id, '$meta_key');
Comme LoicTheAztec l'a expliqué, les données sur le produit sont stockées dans les tables posts et postmeta. Voici une requête, j'avais l'habitude d'obtenir les prix dans mon environnement (Prix basé sur les rôles WC installé)
SELECT
wpp.ID,
wppm.meta_key AS FIELD,
wppm.meta_value AS VALUE,
wppm.*
FROM wp_posts AS wpp
LEFT JOIN wp_postmeta AS wppm
ON wpp.ID = wppm.post_id
WHERE wpp.post_type = 'product'
AND (wppm.meta_key = '_regular_price'
OR wppm.meta_key = '_sale_price'
OR wppm.meta_key = '_price'
OR wppm.meta_key = '_product_attributes')
ORDER BY wpp.ID ASC, FIELD ASC, wppm.meta_id DESC;
C'est peut-être utile.
Il y a trois méta_keys dans postmeta table.
[ _sale_price, _regular_price, _price ]
Le premier tableau contient la valeur et le second tableau contient la condition WHERE. Vous pouvez ajouter plus de conditions.
Vous pouvez mettre à jour les valeurs à l'aide du code suivant.
//update _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_price' )
);
//update _regular_price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_regular_price' )
);
//update _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_sale_price ),
array( 'meta_key' => '_sale_price' )
);
Ceci imprime le titre du produit et son prix.
SELECT distinct p.id, p.post_title,pm.meta_key, pm.meta_value
FROM {db_prefix}_postmeta pm
inner join {db_prefix}_posts p on p.id= pm.post_id
WHERE pm.meta_key = '_sale_price'