【问题标题】:How to sort WooCommerce product by featured or tag without additional plugins?如何在没有附加插件的情况下按特色或标签对 WooCommerce 产品进行排序?
【发布时间】:2017-03-09 09:33:18
【问题描述】:

我正在使用简码来列出这样的产品类别

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

想知道如何让特色产品在列表中名列前茅?它与orderby parameter 有关,但我不知道。

请不要提出第 3 方插件。
更多信息在 WooCommerce 官方docs.

【问题讨论】:

  • 您想要简码或WP_Query 也可以?
  • 我更喜欢简码。

标签: php wordpress woocommerce sql-order-by featured


【解决方案1】:

产品有一个自定义字段 _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 中。这不是标准方式

希望这会有所帮助!

【讨论】:

  • 不幸的是,这似乎没有效果。它们只是从 Z 到 A 排序。
  • 我已经更新了我的答案,它似乎正在工作,但我很快会再次修改我的答案。在那之前你可以使用它。
  • 现在看起来它们在每次刷新时都是随机排序的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 2019-12-20
  • 2019-02-17
相关资源
最近更新 更多