使用“后视图计数器”按观看次数排序Woocommerce产品

时间:2019-06-16 12:07:48

标签: wordpress woocommerce

任何想法都会受到赞赏。

我正在尝试使用post-views-counter plugin对大多数人浏览的woocommerce产品进行重新排序。

遵循了这些似乎无效的示例Sort products by most viewed

function my_view_filter($query){
  if ($query->is_main_query() && ( $query->is_home() || $query- >is_archive() 
   )
     ) {
     $query->set('post_type', 'product');
     $query->set('suppress_filters', false);
     $query->set('orderby', 'post_views');
     $query->set('order', 'asc');
     $query->set('fields', '');
     }
   }
add_action( 'pre_get_posts', 'my_view_filter' );

2 个答案:

答案 0 :(得分:4)

首先,您要使用的插件已过时。其次,似乎要创建一个表来保存视图,这将需要更改实际的MySQL查询以按日期顺序检索帖子,这需要大量工作来查找所需要做的事情。

您可以只保存访问时的视图以发布元数据,并使用它来在目录中订购产品,如下所示:

/**
 * Setting post count on each visit
 *
 */
add_action( 'woocommerce_before_single_product', 'prefix_save_product_views' );
function prefix_save_product_views(  ) {

    $product_id = get_the_ID();
    $increment = 1;
    $current_visit_count = get_post_meta( $product_id, 'product_visit_count', true );

    $total_visit_count = (int)$current_visit_count + $increment;
    update_post_meta( $product_id, 'product_visit_count', $total_visit_count );

}

/**
 * Change the display order based on visit count only in Catalog
 *
 */
add_filter('woocommerce_get_catalog_ordering_args', 'prefix_woocommerce_catalog_orderby');
function prefix_woocommerce_catalog_orderby( $args ) {
    $args['meta_key'] = 'product_visit_count';
    $args['orderby'] = 'meta_value_num';
    $args['order'] = 'desc';
    return $args;
}

使用pre_get_posts

会遇到多个问题

答案 1 :(得分:0)

// Remove product category/tag meta from its original position
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
// Add product meta in new position
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 5 );
相关问题