$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>Query get post,how to add comment box|Programmer puzzle solving
最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

Query get post,how to add comment box

matteradmin9PV0评论

Hello I have a query that gets a post with id=x and it works but it leaves out the comment box.

Is there a way to add "get comment box" to the query?

<?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;  
?>

Hello I have a query that gets a post with id=x and it works but it leaves out the comment box.

Is there a way to add "get comment box" to the query?

<?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;  
?>
Share Improve this question edited Mar 1, 2012 at 4:26 Jared 3,8453 gold badges35 silver badges58 bronze badges asked Mar 1, 2012 at 2:53 xyzxyz 2152 gold badges7 silver badges14 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 0

First of all, welcome to WPSE!

By default, the comment box does not come with the post object, what you are looking for is the comments_template function.

It should be as simple as changing your code to this:

<?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();
?>

But if I'm correct this would only work for the current post in the loop.

Looking at the function in wp-includes/comment-template.php, it uses global $post and global $wp_query variables. You would need to modify that value in order for the comments template to show up for the post you are displaying.

You could modify that using query_posts instead of get_post, but be sure to reset the query afterwards:

$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!

I haven't tested this but it should work. I would also suggest reading this awesome answer by Rarst about when to use what function to "get posts". :)

With this query you can add the comments.

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

Articles related to this article

Post a comment

comment list (0)

  1. No comments so far