【问题标题】:Filter WooCommerce products by custom attribute object按自定义属性对象过滤 WooCommerce 产品
【发布时间】:2016-02-20 19:07:44
【问题描述】:

我刚刚继承了一个 woocommerce 项目,我需要将主页更改为仅显示特定品牌。他们设置了 Product-Data => Attribute => 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' => '='
    )
)

);

我在这方面尝试了很多变体,但都没有奏效。有什么建议?

【问题讨论】:

    标签: wordpress woocommerce woothemes


    【解决方案1】:

    Woocommerce 属性是分类法,

    假设你要创建一个 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

    Honda 是 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

    【讨论】:

    • 您知道我们如何检查以过滤 TEXTAREA 值,因此我们需要显示所有不为空白的 pa_brand 属性。有可能吗?请帮助解决这个问题:stackoverflow.com/q/68133985/45261
    • @Prashant 我认为你混淆了分类和自定义字段,分类不能是文本区域,如果你正在处理文本区域,那么它应该是你必须使用的自定义字段meta_query而不是税务查询
    • 嗨@silver 这是一个自定义产品属性,我已将其添加为 TEXTAREA 字段。并且在表格中它在分类表中添加数据,所以我认为它是分类?
    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2016-12-20
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多