我需要按照以下方式对我的商店的搜索结果进行排序:首先显示库存中可用的产品,然后显示缺货的产品。
我设法用以下片段为产品页面(商店(做了这件事:
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' ) );
}
除了按库存过滤产品(首先是可用的产品,然后是缺货的产品(外,它还可以处理所有查询,所以我停止使用问题中显示的片段。