sorting - 按 woocommerce 中的评级对产品进行排序

标签 sorting e-commerce woocommerce

我正在尝试在 Woocommerce 的产品类别页面上按照产品的平均评分对产品进行排序。

我找到了将评级放在产品页面上的代码,将代码添加到了functions.php(见下文),但选择评级没有执行任何操作。

我需要调用(或创建)才能使其正常工作的meta_key是什么?

add_filter('woocommerce_get_catalog_ordering_args','custom_woocommerce_get_catalog_ordering_args');

function custom_woocommerce_get_catalog_ordering_args( $args ) {    
    if (isset($_SESSION['orderby'])) {

        switch ($_SESSION['orderby']) :

            case 'date_asc' :

                $args['orderby'] = 'date';

                $args['order'] = 'asc';

                $args['meta_key'] = '';

            break;

            case 'price_desc' :

                $args['orderby'] = 'meta_value_num';

                $args['order'] = 'desc';

                $args['meta_key'] = '_price';

            break;

            case 'title_desc' :

                $args['orderby'] = 'title';

                $args['order'] = 'desc';

                $args['meta_key'] = '';

            break;

            case 'rating_desc' :

                $args['orderby'] = 'rating';

                $args['order'] = 'desc';

                $args['meta_key'] = '';

            break;

        endswitch;

    }

    return $args;    
}

add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby');

function custom_woocommerce_catalog_orderby( $sortby ) {            
    $sortby['rating_desc'] = 'Rating';
    $sortby['title_desc'] = 'Reverse-Alphabetically';

    $sortby['price_desc'] = 'Price (highest to lowest)';

    $sortby['date_asc'] = 'Oldest to newest';

    return $sortby;    
}

最佳答案

尝试将您的案例“rating_desc”更改为此

case 'rating_desc' :

    add_filter( 'posts_clauses', array( $this, 'order_by_rating_post_clauses' ) );

break;

当我遇到类似问题时,经过一番挖掘后,在第 492 行开始的 includes\class-wc-query.php 中找到了这段代码。如果您需要核心函数 order_by_ rating_post_clauses,它位于同一文件的第 547 行。

希望对你有帮助!

关于sorting - 按 woocommerce 中的评级对产品进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824503/

相关文章:

PHP电子商务系统: which one is easiest to modify

php - 多个 Magento 环境

php - 查询为空 PHP 错误

php - 从 WooCommerce 订单应用的优惠券中获取优惠券说明

php - 从可变产品的 WooCommerce 变体中获取权重值

Java 递归和归并排序

javascript - 更新时如何对标签数组进行排序?

python - 从第二个元素开始对python中的列表进行排序

php - 按订单 ID 获取订单总计,无需在 WooCommerce 中进行格式化

python - 使用 Python 对字符串格式的数字进行排序