我的客户有一个WooCommerce在线商店,目前以相反的时间顺序显示他的产品(大约600)(最新的第一,最古老的最后)。
问题在于,较旧的产品没有销售,因为它们总是在页面的底部,他的客户很少滚动到(非常长600个产品!)页面的底部。
不幸的是,客户不准备将产品分为类别或单独的页面。每次显示商店页面时,他也都反对随机产品。
但是,他已经同意以下内容:
- 始终在页面顶部显示最新产品(我们已经使用post_meta'_product_new'标记了这些产品);
- 将剩余的产品分为两个块(最古老的50%和最新的50%),并根据当月交替显示这些块 - 即使是几个月最大的50%块,首先是最新的50%块。
重要的是,post_meta标记的产品始终位于页面顶部。
我认为应该可以使用" Pre_get_post"挂钩应用自定义产品排序:
add_action( 'pre_get_posts', 'custom_vtp_shop_order' );
function custom_vtp_shop_order($q){
if ( ! $q->is_main_query() ) return;
if (! is_admin() && (is_shop() || is_archive) ) {
...do the magic here...
}
remove_action( 'pre_get_posts', 'custom_vtp_shop_order' );
}
,但我不确定如何。
这是我需要发生的事情:
块1:使用post_meta'_product_new';
获取所有产品块2:获取所有其他产品并按时间顺序排序(最新的,最古老的最后);
中间的拆分块2创建一个块3和块4;
4a。甚至在几个月(2月,4月,6月等)下订购我的产品,该产品第1块,第4块,
;4b。在奇数月(1月,3月,5月等)按块1,第4块,第3块订购我的产品。
事先感谢您的任何帮助!
听起来您需要使用wp_query进行三个单独的查询。
1st - products, filtered by '_product_new', sorted newest to oldest
2nd - products, sorted newest to oldest, limit to half of posts
3rd - products, sorted oldest to newest, limit to half of posts.
您可能不得不重写Archive-product.php。我认为这将是最简单的方法。该代码将非常广泛,但是我想不出任何其他方法。