我需要按以下方式对我的商店的搜索结果进行排序:首先显示库存中可用的产品,然后显示缺货的产品。
我用下面的代码片段为产品页面(商店)做了这件事:
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钩子,但到目前为止没有结果。
你能帮我一下吗?
发布于 2022-08-04 19:26:48
通过实现以下代码片段,我找到了解决问题的方法:
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' ) );
}除了按库存过滤产品(首先是可用的产品,然后是缺货的产品)之外,它还可以处理所有的查询,因此我停止使用它在我的问题中显示的片段。
https://stackoverflow.com/questions/73226666
复制相似问题