Расположение цен WooCommerce в базе данных
Я ищу расположение цен товара в зависимости от опции, которую выбирает пользователь в цене товара. Например, в этом магазине WooCommerce есть выпадающий список, где цены меняются в соответствии с выбором пользователя.
Я хочу узнать, где хранятся цены для разных опций в базе данных.
Спасибо

Все данные, такие как различные цены для пользовательского типа записи продукта, хранятся (для каждого продукта) в таблице postmeta.
Чтобы найти ID записи всех продуктов, необходимо выполнить следующий запрос к таблице posts:
SELECT * FROM 'posts' WHERE 'post_type' = 'product'
Для каждого ID продукта (post_id
) можно получить все связанные данные с помощью этого запроса к таблице postmeta:
SELECT * FROM 'postmeta' WHERE 'post_id' = nnnn
(nnnn — это числовой идентификатор (post_id
) продукта)
Вы получите список всех свойств продукта: metakey
и metavalues
.
Для связанных цен meta_key
могут быть, например:
- _regular_price
- _sale_price
- _price
- …
Чтобы получить конкретное значение meta_key
продукта, можно использовать функцию WordPress:
get_post_meta($post_id, '$meta_key');

@ptrcao "_price" — это активная цена (которая может быть обычной ценой или ценой со скидкой, если она определена). "_regular_price" — это цена, которую вы вводите для своего товара в поле "Обычная цена".

Как сказал LoicTheAztec, данные о продуктах хранятся в таблицах posts и postmeta. Вот запрос, который я использовал для получения цен в моей среде (с установленным плагином WC Role Based Price)
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;
Возможно, это будет полезно.

В таблице postmeta есть три meta_key:
[ _sale_price, _regular_price, _price ]
Первый массив содержит значения, а второй массив содержит условие WHERE. Вы можете добавить больше условий.
Вы можете обновить значения с помощью следующего кода:
//обновление _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_price' )
);
//обновление _regular_price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_product_price ),
array( 'meta_key' => '_regular_price' )
);
//обновление _price
$wpdb->update(
$wpdb->postmeta,
array( 'meta_value' => $default_sale_price ),
array( 'meta_key' => '_sale_price' )
);
