Php woocommerce中的自定义订单筛选产品
我有一个网站,有100页的产品,我想排序的元价值,我有一个不是所有的产品将有。因此,我通过使用Php woocommerce中的自定义订单筛选产品,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我有一个网站,有100页的产品,我想排序的元价值,我有一个不是所有的产品将有。因此,我通过使用woocommerce\u get\u catalog\u ordering\u args()覆盖默认的woocommerce进行自定义排序,如下所示: function custom_order($args) { $args ['orderby'] = 'meta_value none'; $args ['order'] = 'desc'; $args ['meta_key'] =
woocommerce\u get\u catalog\u ordering\u args
()覆盖默认的woocommerce进行自定义排序,如下所示:
function custom_order($args) {
$args ['orderby'] = 'meta_value none';
$args ['order'] = 'desc';
$args ['meta_key'] = 'custom_something';
return $args;
}
add_filter('woocommerce_get_catalog_ordering_args', 'custom_order');
但是,由于大多数产品实际上没有那样的价值,它就不会这样排序了。因此,在添加此过滤器后,我只剩下2页。现在我考虑过也许可以用两种方式订购。因此,首先通过custom\u something
,然后通过所有产品都具有的某种价值,例如price
或其他东西,但这并不一定是最好的主意,我也不知道如何做到这一点
我只想把这个值填好的产品,由上面的人订购,然后显示所有其他的产品。其他产品的顺序无关紧要。但现在的结果是,它只显示有价值的产品。它基本上是过滤而不是排序。我怎样才能做到这一点?我已经看到了这一点:但我真的不知道如何将其应用到我的订单中
编辑:
我试过@johannes的答案,当我var_dump($args)代码>我得到:
array(3) {
["orderby"]=> string(15) "meta_value none"
["order"]=> string(4) "desc"
["meta_key"]=> string(16) "custom_something"
}
我不明白为什么这不起作用。如果您的自定义字段没有出现在以下文件中,则可以使用备用排序字段:
我还没有机会测试它,但这应该建议WooCommerce首先按meta_值下单,然后,如果某个产品不存在此值,则按none下单如果您的自定义字段不存在,则可以使用回退排序字段:
我还没有机会测试它,但这应该建议WooCommerce首先按meta_值下单,然后,如果产品不存在此值,按none下单修改后是否需要返回$args
数组,或者我错了?此外,您的代码中缺少函数的参数。@Johannes您是对的,我只是想包含解决问题所需的代码。您不需要在修改后返回$args
数组吗?还是我错了?此外,您的代码中缺少函数的参数。@Johannes您是对的,我只是想包含解决问题所需的代码。这并没有改变我的结果。我复制了你的代码。您确定没有遗漏任何内容吗?很抱歉,我已经测试了几种可能的解决方案(例如,meta\u query
),但没有一个显示所需的结果。这并没有改变我的结果。我复制了你的代码。您确定没有遗漏任何内容吗?很抱歉,我已经测试了几种可能的解决方案(例如,meta\u query
),但没有一个显示出预期的结果。
function custom_order($args) {
$args['orderby'] = 'meta_value none';
$args['order'] = 'desc';
$args['meta_key'] = 'custom_something';
return $args;
}
add_filter('woocommerce_get_catalog_ordering_args', 'custom_order');