php 如何按特色或标签对WooCommerce产品进行排序,而不需要额外的插件?

4uqofj5v  于 2022-10-30  发布在  PHP
关注(0)|答案(1)|浏览(117)

我用简码列出了这样的产品类别

[product_category category="products" orderby="title" order="asc"]

并且想知道我如何才能让特色产品排在列表的首位?这和orderby参数有关系,但我不知道。

  • 请勿建议使用第三方插件。*

更多信息在WooCommerce官方docs

14ifxucb

14ifxucb1#

产品有一个自定义字段_featured,对于特色产品设置为**yes,对于非特色产品设置为no**。因此,您可以使用woocommerce_shortcode_products_query筛选器覆盖WooCOmmerce短代码。

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文件中。*
    用途

列出产品从有特色到无特色(即从yesno

[product_category category="products" orderby="_featured" order="DESC"]

请注意:* 上面的代码似乎是工作,但如果你打印$args['orderby']它是不显示_featured键,所以我硬编码,它在$args。这不是一个标准的方式 *。
希望这对你有帮助!

相关问题