通过WP_query显示的热门帖子

时间:2016-11-28 06:41:20

标签: php mysql wordpress

我想根据用户要求制作侧边栏但是在这个侧边栏中,用户想要显示热门博客的帖子,我会更多地搜索以显示它,但都是徒劳的。 :( 这是我的代码!

<div class="ms_recent">
    <h5>Popular posts</h5>
    <?php
    $blog_papular = array(
        'posts_per_page'=>5,
        'meta_key' => 'wpb_post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
    );

    $wp_query_papular=new WP_Query($blog_papular);

    while($wp_query_papular->have_posts()) {
        $wp_query_papular->the_post();
        ?>
        <div class="ms_articles">
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail('footer_page_image'); ?>
                <span><?php echo get_the_date('F j'); ?></span>
                <p><?php echo excerpt('8'); ?></p></a>
        </div>
        <?php
    }
    ?>
</div>

有谁知道我错在哪里?

1 个答案:

答案 0 :(得分:0)

越来越多地挖掘WordPress后,我知道自己的错。问题是元键值没有存储在数据库中,这就是为什么我的热门帖子没有显示。 我只需要几步就可以做到这一点:

我们需要做的第一件事是创建一个能够检测帖子视图的函数并将其存储为每个帖子的自定义字段:

 function wpb_set_post_views($postID) {
$count_key = 'wpb_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);
}
}

remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

其次,我将以下代码粘贴到我的单个post循环中:

wpb_set_post_views(get_the_ID());

然后我的博客循环是显示热门帖子:

 <?php
    $blog_papular = array(
        'posts_per_page'=>5,
        'meta_key' => 'wpb_post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
    );
    $wp_query_papular=new WP_Query($blog_papular);
    while($wp_query_papular->have_posts())
    {
        $wp_query_papular->the_post();
        ?>
        <div class="ms_articles">
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail('footer_page_image'); ?>
                <span><?php echo get_the_date('F j'); ?></span>
                <p><?php echo excerpt('8'); ?></p></a>
        </div>
        <?php
    }
    ?>

享受吧! ;)抱歉我的英语不好..