如何修改WooCommerce代码实现指定多分类产品随机排序?
解决WooCommerce多分类产品随机排序问题
只需把单个分类的变量改成分类数组,再调整判断逻辑就能支持多个分类,修改后的代码如下:
function custom_catalog_ordering_args_8( $args ) { // 填写需要启用随机排序的分类slug或名称,多个分类放在数组里 $target_categories = array('分类1的slug', '分类2的slug'); // 判断当前是否是目标分类页面,不是则返回原参数 if ( ! is_product_category($target_categories) ) return $args; // 设置产品随机排序 $args['orderby'] = 'rand'; // 保留原有的日期排序判断(如果不需要可以直接删除这段) if( $args['orderby'] == 'date ID' ) $args['order'] = 'DESC'; return $args; } add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_catalog_ordering_args_8', 20, 1 );
核心修改点:
- 把单个分类变量换成数组
$target_categories,可添加任意数量的分类(优先用分类slug,比分类名称更稳定,避免名称修改后失效) is_product_category()支持传入数组,会自动校验当前页面是否属于数组中的任一分类
额外提示:
- 分类slug可以在WooCommerce后台的「产品分类」编辑页找到
- 如果不需要原代码里的"最新上架"排序逻辑,直接删除那一段
if( $args['orderby'] == 'date ID' )的代码即可,不影响随机排序功能
内容的提问来源于stack exchange,提问作者Deyv
相关产品推荐
相关产品推荐

