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