web-dev-qa-db-fra.com

WooCommerce emplacement des prix dans DB

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

4
sali

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');

5
LoicTheAztec

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.

2
Marcel Lange

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' )
);
1
Umair Idrees

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'
0
Albert Sauqué