web-dev-qa-db-fra.com

Accéder au contenu du message avec WP_Query

J'ai le code suivant d'un modèle pour voir obtenir les informations de poste:

<?php
 $args = array(
    'post_type'      => 'post',
    'posts_per_page' => $count,
    'paged'          => $paged,
);
$wp_query = new WP_Query( $args );
?>

<?php if ( $wp_query->have_posts() ) : ?>
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
        <?php echo $wp_query->post_title.'<br>';
    <?php endwhile; ?>
<?php endif; ?>

J'aimerais que le titre de l'article, etc. apparaisse ici, mais lorsque j'ai essayé de le faire comme ci-dessus, il n'affichait rien. Comment puis-je accéder aux informations de la poste?

2
user1048676

Tout d'abord, n'utilisez pas et n'abusez pas de la variable globale $wp_query. Ce global doit être réservé à la requête principale uniquement. Utilisez toute autre variable qui ne créera pas de conflit.

Deuxièmement, n'utilisez pas les propriétés brutes WP_Post . Celles-ci sont brutes et non filtrées. WP_Query configure par défaut postdata, ce qui permet d'utiliser les balises de modèle.

Troisièmement, always réinitialise toutes les instances de WP_Query afin d'éviter tout conflit avec d'autres requêtes sur la même page

Quatrièmement, vous avez une erreur de syntaxe dans cette ligne <?php echo $wp_query->post_title.'<br>';. Il manque une balise php de clôture

Vous pouvez réécrire votre code à quelque chose comme ça

 $args = array(
  'post_type'      => 'post',
  'posts_per_page' => $count,
  'paged'          => $paged,
);
$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) { 
    $query->the_post();
        the_title();
        the_content();
    }
    wp_reset_postdata();
}

MODIFIER

Si vous devez accéder directement aux propriétés WP_Post, vous pouvez utiliser par exemple

echo apply_filters( 'the_content', $query->post_content );

pour afficher le contenu du message,

echo apply_filters( 'the_title', $query->post_title );

affichera le titre de l'article. Le statut de la publication est accessible par

$query->post_status

Voir une liste de toutes les propriétés disponibles ici

N'oubliez pas qu'il existe des balises de modèle qui sont disponibles pendant la boucle pour afficher ces informations sans utiliser les propriétés WP_Post.

3
Pieter Goosen

Légère erreur dans votre code. Une fois que vous avez commencé votre boucle (ce que vous faites après avoir défini $wp_query->the_post();), vous pouvez commencer à accéder au contenu de votre message en utilisant les balises de modèle WordPress. Donc, si vous vouliez afficher un titre et un contenu, cela ressemblerait à ceci:

<?php
$args = array(
  'post_type'      => 'post',
  'posts_per_page' => $count,
  'paged'          => $paged,
);
$wp_query = new WP_Query( $args );
?>

<?php if ( $wp_query->have_posts() ) : ?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<h3><?php the_title(); ?></h3>
<p><?php the_content(); ?></p>
<?php endwhile; ?>
<?php endif; ?>

Je recommande de lire sur WP_Query et les balises de modèle .

0
Jason Hoffmann