WooCommerce商品列表默认支持几种排序方式,默认的排序方式有,价格、日期、商品名称等等,有时候默认的排序选项满足不了我们的需求,我们需要添加一些自定义排序方式,让用户查找商品的时候用户体验更好。
WooCommerce排序的数据依据是 WordPress 的 post meta,所以,我们要想添加自定义排序方式,首先要有可以用来排序的的 post meta,比如点赞的数量,这里我们假设已经给WooCommerce添加了点赞功能,点赞数据保存在 WordPress 的 post meta 中,meta_key 为 “like”。
添加自定义排序选项到商品列表的下拉菜单中
使用下面代码,可以添加“按喜欢度排序”到WooCommerce的商品列表中。
add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby');
//添加新选项到 $sortby 参数
function custom_woocommerce_catalog_orderby($sortby) {
$sortby['like'] = "按喜欢度排序";
return $sortby;
}
到这里,我们只是添加了自定义选项到排序下拉列表,选择这个是没有用的,因为排序用的数据还没有添加上。
添加排序用的自定义字段数据到排序功能
add_filter('woocommerce_get_catalog_ordering_args', 'custom_catalog_ordering_args');
function custom_catalog_ordering_args($args) {
global $wp_query;
// 获取排序参数
if ($_GET['orderby'] == "like") {
$args['meta_key'] = 'like';
$args['orderby'] = 'meta_value';
$args['order'] = "ASC";
}
return $args;
}
把以上代码添加上以后,再选择“按喜欢度排序”排序,商品就按照被喜欢的次数从多到少排好序了。当然,你也可以根据你的需求,添加其他排序方式。