Wordpress wp_query而不是

时间:2013-08-08 22:53:51

标签: wordpress

我有这个功能,显示5个查看次数最多的帖子。

在functions.php中的

我有:

// function to display number of posts.
function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}

// function to count views.
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

目前,我正在使用 query_posts 方法显示5条观看次数最多的帖子:

<?php
query_posts( array (
   'post_type' => 'post', 
   'showposts' => 5,
   'meta_key' => 'post_views_count',
   'orderby' => 'meta_value_num',
   )
   );

   if (have_posts()) : while (have_posts()) : the_post();?>
       <a href="<?php the_permalink();?>"><?php the_title();?></a>      
   <?php endwhile; endif; wp_reset_query(); ?> 

现在我试图通过使用wp_query来实现相同的结果,但它似乎没有起作用。

这是我用于 wp_query 的代码:

<?php $custom_query = new WP_Query('showposts=5, meta_key=post_views_count, orderby=meta_value_num'); // exclude category 9
while($custom_query->have_posts()) : $custom_query->the_post(); ?>

<a href="<?php the_permalink();?>"><?php the_title();?></a>     


<?php endwhile; ?>
<?php wp_reset_postdata(); // reset the query ?>

它只显示5个最新帖子,而不是5个观看次数最多的帖子。有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

尝试将您的参数作为数组:

$wpq_args = array(
    'post_type' => 'post',
    'showposts' => 5,
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num'
);
$custom_query = new WP_Query($wpq_args);

请参阅文档以获取一些示例和所有参数:http://codex.wordpress.org/Class_Reference/WP_Query

答案 1 :(得分:1)

documentation

开始,

showsposts不再是WP_Query的有效参数

  

posts_per_page(int) - 每页显示的帖子数量(适用于版本2.1,替换了showposts参数)。

正如lorem monkey建议的那样,最好将参数作为数组传递。

<?php 

$args = array('posts_per_page'=>5,'meta_key'=>'post_views_count','orderby'=>'meta_value_num');
$custom_query = new WP_Query($args);
while($custom_query->have_posts()) : $custom_query->the_post(); ?>

<a href="<?php the_permalink();?>"><?php the_title();?></a>     


<?php endwhile; ?>
<?php wp_reset_postdata(); // reset the query 

?>