我正在使用简码列出这样的产品类别
[product_category category="products" orderby="title" order="asc"]
并且想知道如何才能使特色产品位于列表的顶部?它与 orderby 参数 有关,但我不知道。
请不要推荐第 3 方插件。
更多信息请参阅 WooCommerce 官方docs。
产品有一个自定义字段
,设置为_featured
代表特色产品,yes
代表非特色产品。所以你可以 使用no
过滤器覆盖 WooCOmmerce 短代码。woocommerce_shortcode_products_query
add_filter('woocommerce_shortcode_products_query', 'wh_woocommerce_shortcode_products_orderby');
function wh_woocommerce_shortcode_products_orderby($args)
{
$standard_array = ['menu_order', 'title', 'date', 'rand', 'id'];
// print_r($args['orderby']);
if (isset($args['orderby']) && !in_array($args['orderby'], $standard_array))
{
$args['meta_key'] = '_featured';
$args['orderby'] = 'meta_value_num';
}
// print_r($args);
return $args;
}
代码位于活动子主题(或主题)的 function.php 文件中。或者也可以在任何插件 php 文件中。
使用
列出产品形式从特色到非特色(即,形式
yes
到 no
)
[product_category category="products" orderby="_featured" order="DESC"]
请注意::上面的代码似乎可以工作,但是如果你打印
$args['orderby']
,它不会显示_featured
键,所以我硬编码,它在$args
中。这不是标准方法。
希望这有帮助!