按自定义属性对象

时间:2015-11-18 21:05:58

标签: wordpress wordpress-plugin woocommerce woothemes

我刚刚继承了一个woocommerce项目,我需要将主页更改为仅显示特定品牌。他们设置了Product-Data =>属性=> pa_brand。

如果我打印pa_brand数组,它会告诉我:

Array
(
[0] => stdClass Object
    (
        [term_id] => 1134
        [name] => Name Brand
        [slug] => name-brand
        [term_group] => 0
        [term_taxonomy_id] => 1134
        [taxonomy] => pa_brand
        [description] => 
        [parent] => 0
        [count] => 68
        [object_id] => 3385
        [filter] => raw
    )
)

我的印象是我可以使用pa_brand来使用其中一个键值对来过滤查询,最好是slug,但我不确定如何做到这一点。我发现的所有例子都没有一个对象,只是字符串结果:

$args = array(
'post_type' => array('product', 'product_variation'),
'posts_per_page' => 3,
'orderby' => 'rand',
'meta_query' => array(
    array(
        'key' => 'pa_brand',
        'value' =>  array('slug' => 'brand-name'),
        'compare' => '=',
    ),
    array(
        'key' => '_stock_status',
        'value' => 'instock',
        'compare' => '='
    )
)

);

我已经尝试了很多这方面的变化,但没有一个有效。有什么建议?

1 个答案:

答案 0 :(得分:3)

Woocommerce属性是Taxonomy,

假设您要创建一个Brand属性,url结构就是这样,

yoursite.com/wp-admin/edit-tags.php?taxonomy=pa_brand&post_type=product

您会看到分类名称为pa_brand

现在,如果您根据该分类法创建一个像本田一样的品牌,那么网址就是这样的,

yoursite.com/wp-admin/edit-tags.php?action=edit&taxonomy=pa_brand&tag_ID=6&post_type=product

本田是pa_brand分类标签下标签为ID 6

的标签

现在要根据特定分类进行woocommerce查询,

我们可以使用WP_query

我们可以使用这样的参数,

$args = array( 
    'post_type' => 'product', 
    'taxonomy' => 'pa_brand', // This is the taxonomy slug for brand taxonomy
    'term' => 'honda' // This is terms slug of the Honda Brand
);

如果您参考文档,则上述参数与this

相同
$args = array(
    'post_type' => 'product',
    'tax_query' => array(
        array(
            'taxonomy' => 'pa_brand',
            'field'    => 'slug',
            'terms'    => 'honda',
        ),
    ),
);

编辑: Woocommerce属性是分类法而不是自定义场,

您需要使用tax_query而不是meta_query,分类法保存在wp_term_taxonomywp_terms数据库表下,而meta_query用于基于对象查询在wp_postmeta数据库表

下保存的元字段/自定义字段值

https://codex.wordpress.org/Class_Reference/WP_Query