使用wordpress数据库编写自定义代码以创建产品详细信息页面。
我已经显示了产品名称,desc,价格,库存等,并且产品属性受到了限制。 在数据库中,_product_attributes以序列化方式存储在数据库的wp_postmeta表中。我无法从中取消属性。但是我发现,每个具有自己价格的属性值都存储在wp_postmeta中的其他一些post_id中。
例如,post_id = 55的产品的属性名称'Size value'的值为14和18,价格为300和350,在post_id = 110,111中显示为属性值和价格
背后有任何公式吗?有没有想过找到这个产品属性值和相应的价格值?
答案 0 :(得分:3)
产品属性存储在两个位置 - 在wp_terms,wp_term_taxonomy和wp_term_relationships(首先是 - 每个属性前面都有pa_作为其分类名称 - 例如,如果你有颜色属性,它就是'在pa_color下,然后在' _product_attributes'下的wp_postmeta中作为PHP序列化数组。 meta_key。
你可以在这里找到构造seriliazed属性数组的方法:
https://github.com/woothemes/woocommerce/blob/master/includes/class-wc-ajax.php
查找函数save_attributes()和add_attribute以查看序列化数组的构造方式。
答案 1 :(得分:3)
我采取了一些不同的方法,我在我的数据库中创建了一个存储过程,它将返回与woocommerce产品相关的所有术语。我决定走这条路,因为我可以从我的wordpress网站和我正在创建的桌面应用程序调用该程序,而无需用两种不同的语言编写该功能。
虽然我会在这里发布,供其他人使用。
CREATE DEFINER=`database_name_here`@`%` PROCEDURE `get_product_attributes`(IN ProductName TEXT)
BEGIN
SELECT DISTINCT
p.post_title AS 'Product Name',
t.name AS 'Term Name',
tt.taxonomy AS 'Term Type',
tt.description AS 'Term Description'
FROM
wp_posts AS p
INNER JOIN
wp_term_relationships AS tr ON p.id = tr.object_id
INNER JOIN
wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
INNER JOIN
wp_terms AS t ON t.term_id = tt.term_id
WHERE
p.post_title= ProductName
AND
p.post_type = 'product';
END
答案 2 :(得分:0)
$ args = array(' post_type' =>' product',''); $ products = get_posts($ args);
foreach ($products as $product) {
$data = get_post_meta($product->ID);
$pr['regular_price'] = $data['_regular_price']['0'];
$pr['sale_price'] = $data['_sale_price']['0'];
答案 3 :(得分:0)
.js