Ubicación de precios de WooCommerce en la base de datos
Estoy buscando la ubicación de los precios de un producto según la opción que el usuario selecciona en el precio del producto. Por ejemplo, esta tienda WooCommerce tiene un selector cuyos precios cambian según la selección del usuario.
Quiero saber dónde se almacenan los precios de las diferentes opciones en la base de datos.
Gracias

Todos los datos como los diferentes precios de un tipo de publicación personalizada de producto se almacenan (para cada producto) en la tabla postmeta.
Para encontrar el ID de publicación de todos los productos, debes usar esta consulta en la tabla posts:
SELECT * FROM 'posts' WHERE 'post_type' = 'product'
Para cada ID de producto (post_id
), puedes recuperar todos los datos relacionados con esta consulta en la tabla postmeta:
SELECT * FROM 'postmeta' WHERE 'post_id' = nnnn
(nnnn es el número de ID (post_id
) de un producto)
Obtendrás la lista de todas las propiedades del producto metakey
y metavalues
.
Para los meta_key
relacionados con el precio que tienes, por ejemplo:
- _regular_price
- _sale_price
- _price
- …
Para obtener un valor particular de un meta_key de producto, puedes usar la función de WordPress:
get_post_meta($post_id, '$meta_key');

@ptrcao "_price" es el precio activo (que puede ser el precio regular o el precio de oferta si está definido). "_regular_price" es el precio que ingresas en tu producto, bajo precio regular.

@ptrcao Si el producto está en oferta (con un precio de oferta definido y activo), el precio activo "_price" es igual al precio de oferta (por lo tanto, diferente al precio regular). Si el producto no está en oferta, el precio activo "_price" es igual al precio regular.

Como mencionó LoicTheAztec, los datos del producto residen en las tablas posts y postmeta. Aquí hay una consulta que utilicé para obtener los precios en mi entorno (con WC Role Based Price instalado)
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;
Quizás esto sea útil.

Aquí hay tres meta_keys en la tabla postmeta.
[ _sale_price, _regular_price, _price ]
El primer array contiene el valor y el segundo array contiene la condición WHERE. Puedes añadir más condiciones.
Puedes actualizar los valores usando el siguiente código.
//actualizar _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_price' )
);
//actualizar _regular_price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_regular_price' )
);
//actualizar _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_sale_price ),
array( 'meta_key' => '_sale_price' )
);
