Wordpress 按浏览量最大的分类产品

Wordpress 按浏览量最大的分类产品,wordpress,woocommerce,hook-woocommerce,Wordpress,Woocommerce,Hook Woocommerce,我正在使用一个插件,它已经统计了产品视图并将其存储在一个名为“mwb_wpr_data”的表中 列出产品视图的查询是: 从“mwb\u wpr\u data”中选择不同的('productid'),其中“action'”为“view” productid字段是Woocomerce产品的FK 如何修改Woocommerce的默认排序,使其能够根据“mwb_wpr_数据”表中大多数视图的顺序显示产品 使用插件后视图计数器的当前代码: add_action( 'pre_get_posts', 'my_

我正在使用一个插件,它已经统计了产品视图并将其存储在一个名为“mwb_wpr_data”的表中

列出产品视图的查询是:

从“mwb\u wpr\u data”中选择不同的('productid'),其中“action'”为“view”

productid字段是Woocomerce产品的FK

如何修改Woocommerce的默认排序,使其能够根据“mwb_wpr_数据”表中大多数视图的顺序显示产品

使用插件后视图计数器的当前代码:

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

我不确定你正在使用的插件(如果你能提供更多的信息,那就太好了),但我已经使用多年了,效果非常好

它甚至还有一个查询参数用于WP\u query(通过帖子视图查询帖子):

编辑:如果没有插件,此查询参数将无法工作,因为它不是WordPress的默认参数

有关此插件API的更多信息,请单击此处:

我希望这有帮助,
干杯

不确定您正在使用的插件(如果您能提供更多信息,那就太好了),但我已经使用多年了,效果非常好

它甚至还有一个查询参数用于WP\u query(通过帖子视图查询帖子):

编辑:如果没有插件,此查询参数将无法工作,因为它不是WordPress的默认参数

有关此插件API的更多信息,请单击此处:

我希望这有帮助,
干杯

根据我的说法,您已经设置了正确的pre\u get\u post,但问题在于您的if条件

您已经设置了当前\u用户\u can,该筛选器不适用于每个用户,因此如果您未使用管理员角色登录,则查询将无法工作

current_user_can('administrator')
从条件中删除上面的一个

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

根据我的说法,你已经设置了正确的pre_-get_-post,但问题在于你的if条件

您已经设置了当前\u用户\u can,该筛选器不适用于每个用户,因此如果您未使用管理员角色登录,则查询将无法工作

current_user_can('administrator')
从条件中删除上面的一个

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

好的,正确的方法是

  • 更改post视图计数的存储方式,以便将它们存储为每个产品(post)的POSTETA,存储在类似_post_views_count的字段中

  • 在wp_查询中使用meta_键和orderby,如下所示

    $args = array(
        'meta_key' => '_post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    );
    
  • 如果你想使用相同的插件来记录你的产品视图,我会设置一个函数,每当一个post视图被添加到更新产品postETA字段的表中时,该函数就会触发

    它优雅吗?没有


    行吗?是的。

    好的,所以正确的方法是

  • 更改post视图计数的存储方式,以便将它们存储为每个产品(post)的POSTETA,存储在类似_post_views_count的字段中

  • 在wp_查询中使用meta_键和orderby,如下所示

    $args = array(
        'meta_key' => '_post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    );
    
  • 如果你想使用相同的插件来记录你的产品视图,我会设置一个函数,每当一个post视图被添加到更新产品postETA字段的表中时,该函数就会触发

    它优雅吗?没有


    行吗?是。

    根据插件文档,您还需要通过post_类型才能正常工作,即

    $args = array(
        'order' => 'asc',
        'post_type' => 'event',
        // required by PVC
        'suppress_filters' => false,
        'orderby' => 'post_views',
        'fields' => ''
    );
    $most_viewed = get_posts( $args );
    
    该代码位于@Marounn在更高评论中链接到的帖子中

    同时尝试传递post_type arg,即

     $query->set('post_type', 'product');
    

    根据插件文档,您需要通过post_类型才能正常工作,即

    $args = array(
        'order' => 'asc',
        'post_type' => 'event',
        // required by PVC
        'suppress_filters' => false,
        'orderby' => 'post_views',
        'fields' => ''
    );
    $most_viewed = get_posts( $args );
    
    该代码位于@Marounn在更高评论中链接到的帖子中

    同时尝试传递post_type arg,即

     $query->set('post_type', 'product');
    

    如果您想显示浏览次数最多的产品,则可以按照以下步骤操作

    步骤:1我使用(添加菜单页面)功能在管理面板中添加菜单。在函数文件中

    function admin_manage_users22(){
    add_menu_page('My Page Title', 'MVP', 'manage_options', 'MVP_backend_view', 
    'MVP_backend_view' );
    }
    add_action('admin_menu', 'admin_manage_users22');
    
    步骤:2在用户查看产品后获取产品详细信息。它是带有post id的wp_Posteta中的+1计数器值。默认值设置为1

    function MVP_product_details($product ) {
    
    $post_id = get_the_ID();
    $count_key = 'AK_product_view_count';
    $count     = get_post_meta( $post_id, $count_key, true );
    if ( empty( $count ) ) {
        delete_post_meta( $post_id, $count_key );
        update_post_meta( $post_id, $count_key, '1' );
        echo "count null"; 
    }else{
        $count ++;
        update_post_meta( $post_id, $count_key, (string) $count );
    }
    }
     add_filter( 'woocommerce_quantity_input_args', 'MVP_product_details', 10, 2 );
    
    步骤:3现在,您只需使用下面的代码就可以获得查看最多的产品详细信息

    function MVP_backend_view(){
    $count_key                = 'AK_product_view_count';
    $query_args               = array(
        'posts_per_page' => 3,
        'no_found_rows'  => 1,
        'post_status'    => 'publish',
        'post_type'      => 'product',
        'orderby'        => 'meta_value',
        'order'          => 'DESC',
        'meta_key'       => $count_key,
    );
    $query_args['meta_query'] = array(
        array(
            'key'     => $count_key,
            'value'   => '0',
            'type'    => 'numeric',
            'compare' => '>',
        ),
    );
    $zwcmvp_query = new WP_Query( $query_args );
    

    如果您想显示浏览次数最多的产品,则可以按照以下步骤操作

    步骤:1我使用(添加菜单页面)功能在管理面板中添加菜单。在函数文件中

    function admin_manage_users22(){
    add_menu_page('My Page Title', 'MVP', 'manage_options', 'MVP_backend_view', 
    'MVP_backend_view' );
    }
    add_action('admin_menu', 'admin_manage_users22');
    
    步骤:2在用户查看产品后获取产品详细信息。它是带有post id的wp_Posteta中的+1计数器值。默认值设置为1

    function MVP_product_details($product ) {
    
    $post_id = get_the_ID();
    $count_key = 'AK_product_view_count';
    $count     = get_post_meta( $post_id, $count_key, true );
    if ( empty( $count ) ) {
        delete_post_meta( $post_id, $count_key );
        update_post_meta( $post_id, $count_key, '1' );
        echo "count null"; 
    }else{
        $count ++;
        update_post_meta( $post_id, $count_key, (string) $count );
    }
    }
     add_filter( 'woocommerce_quantity_input_args', 'MVP_product_details', 10, 2 );
    
    步骤:3现在,您只需使用下面的代码就可以获得查看最多的产品详细信息

    function MVP_backend_view(){
    $count_key                = 'AK_product_view_count';
    $query_args               = array(
        'posts_per_page' => 3,
        'no_found_rows'  => 1,
        'post_status'    => 'publish',
        'post_type'      => 'product',
        'orderby'        => 'meta_value',
        'order'          => 'DESC',
        'meta_key'       => $count_key,
    );
    $query_args['meta_query'] = array(
        array(
            'key'     => $count_key,
            'value'   => '0',
            'type'    => 'numeric',
            'compare' => '>',
        ),
    );
    $zwcmvp_query = new WP_Query( $query_args );
    

    您的产品视图应该使用post meta保存。这会更容易。您的产品视图应存储为产品元。使用按元值排序将更容易排序。您可以与我共享该插件名称吗?您的产品视图应使用post meta保存。这会更容易。你的产品视图应该存储为产品元。使用按元值排序会更容易。你能和我分享插件名称吗?你能帮我在“pre_get_posts”中使用它吗?可能吗?我已经用代码更新了我的问题!以下是的可能值,
    “后期视图”
    不是其中之一。@Reigel是正确的。orderby不接受“post_views”值,主要是因为Wordpress没有将此数据记录为默认值。您好@Reigel,您是对的,这不是Wordpress默认值,您需要先添加插件。我会相应地更新我的答案。@BernardoLima,我从来没有用pre_get_posts尝试过这个,你为什么还要用它?如果正在使用自定义模板,请直接更改查询。如果没有,请尝试实现子主题并直接更新代码(它将自动覆盖它)<>。让我知道给你额外的帮助。你能帮我在“pre_get_posts”中使用它吗?可能吗?我已经用代码更新了我的问题!以下是的可能值,
    “后期视图”
    不是其中之一。@Reigel是正确的。orderby不接受值“post_views”,主要是因为此数据不是reco