Posizione dei prezzi WooCommerce nel database

27 gen 2016, 08:56:27
Visualizzazioni: 35.4K
Voti: 13

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

1
Commenti

Un prodotto è un custom post il cui post_type è "product". Nel database devi cercare nella tabella posts dove il post_type è product. Per ogni post_id (ID prodotto) puoi trovare tutti i dati relativi a questo prodotto nella tabella postmeta: SELECT * FROM 'postmeta' WHERE 'post_id' = nnnn (nnnn è il numero ID di un prodotto). Tutti i diversi prezzi per ogni prodotto sono memorizzati nella tabella "postmeta".

LoicTheAztec LoicTheAztec
3 apr 2016 00:46:24
Tutte le risposte alla domanda 4
4
13

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

3 apr 2016 01:39:11
Commenti

In Woocommerce, qual è la differenza tra _regular_price e _price?

ptrcao ptrcao
22 gen 2019 22:23:08

@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.

LoicTheAztec LoicTheAztec
22 gen 2019 22:26:06

Grazie - e dove/come si definisce il prezzo "attivo"?

ptrcao ptrcao
22 gen 2019 22:30:08

@ptrcao Se il prodotto è in vendita (con un prezzo scontato definito e attivo), il prezzo attivo "_price" è uguale al prezzo scontato (quindi diverso dal prezzo regolare). Se il prodotto non è in vendita, il prezzo attivo "_price" è uguale al prezzo regolare.

LoicTheAztec LoicTheAztec
22 gen 2019 22:33:30
0

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.

17 mag 2017 13:35:58
1

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' )
);
11 nov 2017 13:26:04
Commenti

Le query sono incomplete. È essenziale impostare nel secondo array (clausola WHERE) il post_id altrimenti lo stesso prezzo verrà impostato per tutti i post (assumendo prodotti).

Vincenzo Di Gaetano Vincenzo Di Gaetano
22 nov 2023 21:10:30
0

Questo codice stampa il titolo del prodotto e il suo prezzo.

 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'
11 gen 2019 19:27:38