我的客户有一个WooCommerce在线商店,目前以反向时间顺序显示他的产品(约600)(最新的,最后的最后一个)。
问题是旧产品不销售,因为它们总是位于页面底部,而且他的客户很少滚动到(非常长的600产品!)页面的底部。
不幸的是,客户不准备将产品分成不同的类别或分成不同的页面。每次显示商店页面时,他也会反对随机产品类别。
然而,他已同意以下内容:重要的是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,创建一个Block 3和Block 4;
4A。偶数个月(2月,4月,6月等)在第4区块3区块1下订购我的产品;
4b中。奇数月份(1月,3月,5月等)在第3区块4区块1下订购我的产品。
提前感谢您的帮助!
答案 0 :(得分:0)
听起来你需要使用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。我认为这将是最简单的方法。代码将非常广泛,但我无法想到你能做到这一点的任何其他方式。