Locația prețurilor WooCommerce în baza de date
Caut locația prețurilor unui produs în funcție de opțiunea pe care utilizatorul o selectează în prețul produsului. De exemplu, acest magazin WooCommerce are un selector în care prețurile se modifică în funcție de selecția utilizatorului.
Vreau să știu unde sunt stocate prețurile pentru diferitele opțiuni în baza de date.
Mulțumesc

Toate datele, cum ar fi diferitele prețuri ale unui tip de postare personalizat pentru produse sunt stocate (pentru fiecare produs) în tabelul postmeta.
Pentru a găsi ID-ul postării pentru toate produsele, trebuie să utilizați această interogare în tabelul posts:
SELECT * FROM 'posts' WHERE 'post_type' = 'product'
Pentru fiecare ID de produs (post_id
), puteți prelua toate datele asociate cu această interogare în tabelul postmeta:
SELECT * FROM 'postmeta' WHERE 'post_id' = nnnn
(nnnn reprezintă numărul ID (post_id
) al unui produs)
Veți obține lista tuturor proprietăților produsului metakey
și metavalues
.
Pentru cheile meta (meta_key
) legate de preț, aveți, de exemplu:
- _regular_price
- _sale_price
- _price
- …
Pentru a obține o valoare specifică a unei chei meta a unui produs, puteți utiliza funcția WordPress:
get_post_meta($post_id, '$meta_key');

@ptrcao "_price" este prețul activ (care poate fi prețul obișnuit sau prețul redus dacă este definit). "_regular_price" este prețul pe care îl introduceți în produs, sub prețul obișnuit.

După cum a menționat LoicTheAztec, datele despre produse sunt stocate în tabelele posts și postmeta. Iată o interogare pe care am folosit-o pentru a obține prețurile în mediul meu (cu WC Role Based Price instalat):
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;
Poate această informație vă este utilă.

Aici sunt trei meta_keys în tabelul postmeta.
[ _sale_price, _regular_price, _price ]
Primul array conține valoarea, iar al doilea array conține condiția WHERE. Puteți adăuga mai multe condiții.
Puteți actualiza valorile folosind următorul cod.
//actualizează _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_price' )
);
//actualizează _regular_price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_regular_price' )
);
//actualizează _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_sale_price ),
array( 'meta_key' => '_sale_price' )
);
