要实现按价格升序排序时,没有价格的产品放在底部,可以使用自定义的排序函数来处理。
首先,在主题的functions.php文件中添加以下代码来创建一个自定义的排序函数:
function custom_product_sort($query) {
if ( is_admin() && $query->is_main_query() && $query->get('orderby') === 'price' ) {
$query->set( 'meta_query', array(
'relation' => 'OR',
array(
'key' => 'price',
'compare' => 'EXISTS'
),
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
) );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'meta_key', 'price' );
$query->set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'custom_product_sort' );
然后,在WordPress的后台管理界面中,进入产品列表页面,选择按价格排序即可看到没有价格的产品会被放在底部。
这个代码会在WordPress后台管理界面的产品列表页面中拦截查询请求,并根据排序条件来修改查询参数。它首先将'orderby'参数设置为'meta_value_num',这样可以按照价格的数值进行排序。然后使用'meta_query'参数来定义一个关系数组,包含两个条件:一个是'price'键存在的产品,另一个是'price'键不存在的产品。最后设置'order'参数为'ASC',表示升序排序。
请注意,这个例子假设产品的价格是使用WordPress中的自定义字段(或元数据)来存储的,字段键名为'price'。如果你的产品价格是以不同的方式存储的,你需要相应地修改代码中的'meta_key'参数和'key'参数来匹配你的字段名称。
上一篇:按价格升序排序列表
下一篇:按价格小数点分组并按数量求和。