如何从wordpress数据库获取产品属性

时间:2014-02-26 07:40:55

标签: wordpress custom-attributes product

使用wordpress数据库编写自定义代码以创建产品详细信息页面。

我已经显示了产品名称,desc,价格,库存等,并且产品属性受到了限制。 在数据库中,_product_attributes以序列化方式存储在数据库的wp_postmeta表中。我无法从中取消属​​性。但是我发现,每个具有自己价格的属性值都存储在wp_postmeta中的其他一些post_id中。

例如,post_id = 55的产品的属性名称'Size value'的值为14和18,价格为300和350,在post_id = 110,111中显示为属性值和价格

wp_postmeta wp-postmeta-example

背后有任何公式吗?有没有想过找到这个产品属性值和相应的价格值?

4 个答案:

答案 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