Posizione dei prezzi WooCommerce nel database
Sto cercando la posizione dei prezzi di un prodotto in base all'opzione che l'utente seleziona nel prezzo del prodotto. Per esempio, questo negozio WooCommerce ha un menu a tendina i cui prezzi cambiano in base alla selezione dell'utente.
Vorrei sapere dove sono memorizzati i prezzi per le diverse opzioni nel database.
Grazie

Tutti i dati come i diversi prezzi di un custom post type di prodotto sono memorizzati (per ogni prodotto) nella tabella postmeta.
Per trovare l'ID del post di tutti i prodotti devi usare questa query sulla tabella posts:
SELECT * FROM 'posts' WHERE 'post_type' = 'product'
Per ogni ID prodotto (post_id
), puoi recuperare tutti i dati correlati con questa query sulla tabella postmeta:
SELECT * FROM 'postmeta' WHERE 'post_id' = nnnn
(nnnn è il numero ID (post_id
) di un prodotto)
Otterrai la lista di tutte le proprietà del prodotto metakey
e metavalues
.
Per i meta_key
relativi al prezzo hai, ad esempio:
- _regular_price
- _sale_price
- _price
- …
Per ottenere un valore particolare di un meta_key del prodotto, puoi usare la funzione di WordPress:
get_post_meta($post_id, '$meta_key');

@ptrcao "_price" è il prezzo attivo (che può essere il prezzo regolare o il prezzo scontato se definito). "_regular_price" è il prezzo che inserisci nel tuo prodotto, sotto la voce prezzo regolare.

Come ha detto LoicTheAztec, i dati del prodotto risiedono nelle tabelle posts e postmeta. Ecco una query che ho utilizzato per ottenere i prezzi nel mio ambiente (con WC Role Based Price installato)
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;
Forse questo può essere utile.

Ecco tre meta_keys nella tabella postmeta.
[ _sale_price, _regular_price, _price ]
Il primo array contiene i valori e il secondo array contiene la condizione WHERE. Puoi aggiungere ulteriori condizioni.
Puoi aggiornare i valori utilizzando il seguente codice.
//aggiorna _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_price' )
);
//aggiorna _regular_price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_regular_price' )
);
//aggiorna _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_sale_price ),
array( 'meta_key' => '_sale_price' )
);
