web-dev-qa-db-fra.com

Requête get post, comment ajouter une boîte de commentaire

Bonjour, j'ai une requête qui obtient un message avec id = x et cela fonctionne, mais il ne contient pas la zone de commentaire.

Est-il possible d'ajouter "obtenir une boîte de commentaire" à la requête?

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

Tout d’abord, bienvenue à WPSE!

Par défaut, la zone de commentaire ne vient pas avec l'objet post. Vous recherchez simplement la fonction comments_template .

Cela devrait être aussi simple que de changer votre code pour ceci:

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

Mais si je ne me trompe pas, cela ne fonctionnerait que pour le poste en cours.

En regardant la fonction dans wp-includes/comment-template.php , il utilise des variables global $post et global $wp_query. Vous devrez modifier cette valeur pour que le modèle de commentaires s'affiche pour le message que vous affichez.

Vous pouvez modifier cela en utilisant query_posts au lieu de get_post, mais veillez à réinitialiser la requête par la suite:

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

Je n'ai pas testé cela mais cela devrait fonctionner. Je suggérerais également de lire cette réponse géniale de Rarst pour savoir quand utiliser quelle fonction pour "obtenir des publications". :)

0
Jared

Avec cette requête, vous pouvez ajouter les commentaires.

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