You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用WooCommerce短码按品牌排序在售商品?

按品牌排序WooCommerce在售商品短码

可以实现按品牌排序,WooCommerce的[products]短码默认orderby参数不支持直接指定品牌,但通过过滤器钩子可以修改查询逻辑,具体步骤如下:

  • 确认你的商品品牌是通过WooCommerce产品属性创建的(属性对应的meta key格式为pa_{属性slug},比如属性slug是brand,则meta key为pa_brand)。
  • 将以下代码添加到主题的functions.php文件或自定义功能插件中:
add_filter( 'woocommerce_shortcode_products_query', 'sort_products_by_brand_in_sale_shortcode', 10, 3 );
function sort_products_by_brand_in_sale_shortcode( $query_args, $atts, $loop_name ) {
    // 仅匹配目标在售商品短码
    if ( isset( $atts['on_sale'] ) && $atts['on_sale'] === 'true' && isset( $atts['title'] ) && $atts['title'] === 'Check our Products on Sale!' ) {
        // 按品牌属性排序,可将ASC改为DESC切换降序
        $query_args['meta_key'] = 'pa_brand';
        $query_args['orderby'] = 'meta_value';
        $query_args['order'] = 'ASC';
    }
    return $query_args;
}
  • 代码说明:
    • 这段钩子只会作用于你指定的在售商品短码(通过on_sale和title参数匹配),不会影响其他短码或页面。
    • 如果你的品牌属性slug不是brand,请将pa_brand替换为实际的meta key(比如属性slug是product-brand,则改为pa_product-brand)。
    • 若品牌存储在自定义字段中,只需把meta_key改为对应的自定义字段键名即可。

你的原短码无需修改,保持原样即可:

[products on_sale="true" columns="6" rows="7" title="Check our Products on Sale!"]

内容的提问来源于stack exchange,提问作者Graham Toomey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:02:37