如何生成评论最多的帖子列表?

时间:2015-03-18 作者:Ramiro

我想打电话给评论最多的帖子列表。但是对DB的调用总是返回相同的post(循环中的第一个post)

这是我在函数中的代码。php

function lugaresincreibles_most_commented() {
    global $wpdb;
    $pop = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}posts WHERE post_type=\'post\' AND post_status=\'publish\' ORDER BY comment_count DESC LIMIT 3");
    foreach($pop as $post) :
        get_template_part( \'content\', \'featured\' );
    endforeach;
}

1 个回复
最合适的回答,由SO网友:M-R 整理而成

函数的主要问题是“get\\u template\\u part”在内部使用全局$post变量来显示post字段。但是,您的$post变量仅用于此函数。我建议阅读这篇方便的文章Displaying Posts Using a Custom Select Query

现在,特别是在你的情况下

function lugaresincreibles_most_commented() {
    global $wpdb, $post; // make $post a global variable
    $pop = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}posts WHERE post_type=\'post\' AND post_status=\'publish\' ORDER BY comment_count DESC LIMIT 3");
    foreach($pop as $post) :
        setup_postdata( $post ); // set the post data.
        get_template_part( \'content\', \'featured\' );
    endforeach;
    wp_reset_postdata();
}

结束

相关推荐

在header.php中包含2个否定的IS_TEMPLATE条件

我想在中设置条件header.php 包装所有模板,除了front-page.php 和single-device.php, 在引导容器元素中。写一个条件实现了我想要的if( !is_singular(\'device\') ) { echo \'<div class=\"container\">\'; } 但是,当包含两个条件时,只有第一个条件适用。if( !is_singular(\'device\') || !is_front_page() ) {