在wooccommerce中对搜索结果进行排序



我需要按照以下方式对我的商店的搜索结果进行排序:首先显示库存中可用的产品,然后显示缺货的产品。

我设法用以下片段为产品页面(商店(做了这件事:

add_filter( 'woocommerce_get_catalog_ordering_args', 'first_sort_by_stock_amount', 9999 );

function first_sort_by_stock_amount( $args ) {
$args['orderby'] = 'meta_value';
$args['meta_key'] = '_stock_status';
return $args;
}

但是,将相同的代码段应用于wc_product_meta_lookup是行不通的。

我被告知要尝试pre_get_post挂钩,但到目前为止没有结果。

你能帮我吗?

我通过实现以下代码段找到了问题的解决方案:

add_action( 'woocommerce_product_query', 'sort_by_stock_status_and_date', 999 );
function sort_by_stock_status_and_date( $query ) {
if ( is_admin() ) return;
$query->set( 'meta_key', '_stock_status' );
$query->set( 'orderby', array( 'meta_value' => 'ASC', 'date' => 'DESC' )  );
}

除了按库存过滤产品(首先是可用的产品,然后是缺货的产品(外,它还可以处理所有查询,所以我停止使用问题中显示的片段。

最新更新