查询GET POST,如何添加评论框

时间:2012-03-01 作者:xyz

您好,我有一个查询,它得到了一篇id为x的帖子,它可以正常工作,但没有显示评论框。

有没有办法将“获取评论框”添加到查询中?

<?php 
$post_id = 104; 
$queried_post = get_post($post_id); 
$content = $queried_post->post_content; 
$content = apply_filters(\'the_content\', $content); 
$content = str_replace(\']]>\', \']]&gt;\', $content); 
echo $content;  
?>

2 个回复
最合适的回答,由SO网友:Jared 整理而成

首先,欢迎来到WPSE!

默认情况下,评论框不随post对象提供,您要查找的是comments_template 作用

只需将代码更改为以下内容即可:

<?php 
$post_id = 104; 
$queried_post = get_post($post_id); 
$content = $queried_post->post_content; 
$content = apply_filters(\'the_content\', $content); 
$content = str_replace(\']]>\', \']]&gt;\', $content); 
echo $content;
comments_template();
?>
但如果我是正确的,这只适用于循环中的当前帖子。

查看function in wp-includes/comment-template.php, 它使用global $postglobal $wp_query 变量。您需要修改该值,以便为正在显示的帖子显示评论模板。

您可以使用query_posts 而不是get_post, 但一定要在之后重置查询:

$post_id = 104; 
query_posts( array( \'p\' => $post_id ) ); 

while( have_posts() ) : the_post();

    $content = apply_filters( \'the_content\', get_the_content() ); 
    $content = str_replace( \']]>\', \']]&gt;\', $content ); 
    echo $content;

    comments_template();

endwhile;

wp_reset_postdata(); // Don\'t forget!
我还没有测试过这个,但它应该可以工作。我还建议你读这本很棒的书answer by Rarst 关于何时使用什么函数“获取帖子”。)

SO网友:clarke

通过此查询,您可以添加注释。

function get_comments( $args = \'\' ) {
    $query = new WP_Comment_Query;
    return $query->query( $args );
}

结束