观看热门帖子,3天,7天,30天不工作

时间:2017-01-07 11:25:11

标签: wordpress views posts

我尝试使用此代码(我在个人博客上找到它)为我的自定义Wordpress主题在一个自定义页面中显示热门帖子。不幸的是,它在这三个UL区块中的每一个都显示相同的帖子。想法是在3天内显示最多观看的帖子,然后在另一个块中显示7天内观看次数最多的帖子,然后在最后一个块中显示30天内观看次数最多的帖子。我现在不知道为什么不工作。

// Top post by views in last 3 day's
<ul>
    <?php
    function filter_where($where = '') {
        $where .= " AND post_date > '" . date('Y-m-d', strtotime('-3 days')) . "'";
        return $where;
    }
    add_filter('posts_where', 'filter_where');
    query_posts('post_type=post&posts_per_page=5&orderby=post_views_count&order=DESC');
    while (have_posts()): the_post(); ?>
        <li><a href="<?php the_permalink(); ?>" title="<?php printf(esc_attr('Permalink to %s'), the_title_attribute('echo=0')); ?>" rel="bookmark"><?php the_title(); ?></a></li>
        <?php
    endwhile;
    wp_reset_query();
    ?>
</ul>

// Top post by views in last 7 day's
<ul>
    <?php
    function filter_where2($where = '') {
        $where .= " AND post_date > '" . date('Y-m-d', strtotime('-7 days')) . "'";
        return $where;
    }
    add_filter('posts_where', 'filter_where2');
    query_posts('post_type=post&posts_per_page=5&orderby=post_views_count&order=DESC');
    while (have_posts()): the_post(); ?>
        <li><a href="<?php the_permalink(); ?>" title="<?php printf(esc_attr('Permalink to %s'), the_title_attribute('echo=0')); ?>" rel="bookmark"><?php the_title(); ?></a></li>
        <?php
    endwhile;
    wp_reset_query();
    ?>
</ul>

// Top post by views in last 30 day's
<ul>
    <?php
    function filter_where3($where = '') {
        $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
        return $where;
    }
    add_filter('posts_where', 'filter_where3');
    query_posts('post_type=post&posts_per_page=5&orderby=post_views_count&order=DESC');
    while (have_posts()): the_post(); ?>
        <li><a href="<?php the_permalink(); ?>" title="<?php printf(esc_attr('Permalink to %s'), the_title_attribute('echo=0')); ?>" rel="bookmark"><?php the_title(); ?></a></li>
        <?php
    endwhile;
    wp_reset_query();
    ?>
</ul> 

1 个答案:

答案 0 :(得分:0)

orderby无法识别WP_Query值(query_posts使用此类)。

您没有提到每次加载帖子时是否添加(和增加)自定义字段post_view_count

如果是这种情况,您可以更改query_posts:

add_filter('posts_where', 'filter_where');
$args = array('post_type'=>'post', 
           'posts_per_page'=>5, 
           'orderby'=>'meta_value_num', 
           'order'=>'DESC', 
           'meta_key'=>'post_views_count'
);
$query = new WP_Query($args);

while ( $query->have_posts() ) {
    $query->the_post(); ?>
    <li><a href="<?php the_permalink(); ?>" title="<?php printf(esc_attr('Permalink to %s'), the_title_attribute('echo=0')); ?>" rel="bookmark"><?php the_title(); ?></a></li>
    <?php
}
wp_reset_query();

继续使用此逻辑进行2次查询。

您会在WP_Query reference

上找到所有详细信息

希望它有所帮助。