【问题标题】:wordpress WP Query order by views countwordpress WP 按浏览次数查询顺序
【发布时间】:2021-03-20 02:39:35
【问题描述】:

您好,我想在 wordpress 中按浏览次数排序文章帖子类型。所以我在文章帖子类型中添加了一个自定义字段,名称是视图,它是一个数字字段。我用 PODS 添加了它。我在 header.php 中编写了这段代码,因此每个视图都会自动递增:

<?php 
    if( get_post_type() == 'article' ) {
        $postview = intval(get_post_field('views'));
        if($postview > 0){
            $postview = $postview+1;
        }else{
            $postview = 1;
        }
        $postID = $post->ID;
        update_post_meta($postID,'views',$postview);
    }   
?>

成功了。但是当我想通过 elementor 添加高级查询时,它无法按预期工作。我将此添加到functions.php:

add_action( 'elementor/query/popular_articles', function( $query ) {
    $query->set('post_type', 'article');
    $query->set('meta_key', 'views');
    $query->set('orderby', 'meta_value_num');
    $query->set('order', 'DESC');
    
} );

我也试过这个:

add_action( 'elementor/query/popular_articles', function( $query ) {
    $query->set('orderby', 'views');
} );

这些在 elementor 帖子小部件中都没有按预期工作,并且结果未排序。当我设置 Popular_article 查询时。我想用 Wordpress WP_Query 实现的事情是这样的 SQL 查询:

select post_title ,wp_z9gsc7_postmeta.meta_key,wp_z9gsc7_postmeta.meta_value from wp_z9gsc7_posts INNER JOIN wp_z9gsc7_postmeta ON wp_z9gsc7_posts.ID = wp_z9gsc7_postmeta.post_id where wp_z9gsc7_postmeta.meta_key = 'views' ORDER BY wp_z9gsc7_postmeta.meta_value DESC

感谢您提前回复

【问题讨论】:

    标签: php mysql sql wordpress elementor


    【解决方案1】:

    这行得通:

    add_action( 'elementor/query/popular_articles', function( $query ) {
    $query->set('post_type', 'article');
    $query->set('meta_key', 'views');
    $query->set('orderby', 'meta_value_num');
    $query->set('order', 'DESC');
    $query->set('offset', 0);
    } );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多