Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 在woocommerce中按评级对产品进行排序_Sorting_E Commerce_Woocommerce - Fatal编程技术网

Sorting 在woocommerce中按评级对产品进行排序

Sorting 在woocommerce中按评级对产品进行排序,sorting,e-commerce,woocommerce,Sorting,E Commerce,Woocommerce,我正试图在Woocommerce的产品分类页面上通过平均评级对产品进行排序 我找到了将评级放在产品页面上的代码,将代码添加到functions.php(见下文),但选择评级没有任何作用 我需要调用(或创建)什么meta_键才能使其工作 add_filter('woocommerce_get_catalog_ordering_args','custom_woocommerce_get_catalog_ordering_args'); function custom_woocommerce_get

我正试图在Woocommerce的产品分类页面上通过平均评级对产品进行排序

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

我需要调用(或创建)什么meta_键才能使其工作

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;
当我遇到类似问题时,经过一些挖掘,在includes\class-wc-query.php的第492行找到了这段代码。如果您需要核心函数order_by_rating_post_子句,它位于同一文件的第547行


希望有帮助

使用
WC\u Shortcode\u产品
生成带有排序参数的WC循环在默认的WC车间页面上使用:

for($i=1;$i<=$num;$i++){
    $atts = array_merge(array(
        'columns' => $columns,
        'orderby' => $order_by,
        'order' => $sort_by,
        'rows' => $rows,
        'page' => $i,
    ));
    $shortcode = new WC_Shortcode_Products($atts, 'recent_products');
    $html ='';
    $html .= $shortcode->get_content();
    echo $html;
}
对于($i=1;$i$列,
'orderby'=>$order\u by,
“订单”=>$sort\u by,
“行”=>$rows,
'第'=>页$i,
));
$shortcode=新的WC_shortcode_产品($atts,“最近的_产品”);
$html='';
$html.=$shortcode->get_content();
echo$html;
}