У меня есть веб-сайт со 100 страницами продуктов, которые я хочу отсортировать по мета-значению, которое есть не у всех продуктов. Поэтому я сделал свой заказ, переопределив стандартный woocommerce со значением woocommerce_get_catalog_ordering_args
( link ) следующим образом:
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_something
, а затем по некоторому значению, которое все продукты имеют, например, price
или что-то в этом роде, но это не обязательно кажется лучшей идеей, и я также не мог понять, как это сделать.
Я просто хочу, чтобы товары, для которых указано это значение, были заказаны выше, а затем просто показывали все остальные товары. Не имеет значения, в каком порядке остальные продукты. Но результат теперь таков, что он показывает только те продукты, которые имеют ценность. Он фильтрует, а не заказывает в основном. Как я смогу выполнить это 1023? Я видел это: https://developer.wordpress.org/reference/classes/wp_query/#order -orderby-параметры , но я не могу понять, как применить это к моему заказу.
РЕДАКТИРОВАТЬ: I Я попробовал ответ от @johannes, и когда я var_dump($args);
получил:
array(3) {
["orderby"]=> string(15) "meta_value none"
["order"]=> string(4) "desc"
["meta_key"]=> string(16) "custom_something"
}
, я не могу понять, почему это не сработает.