Accedere al contenuto del post con WP_Query
Ho il seguente codice da un template per visualizzare le informazioni del post:
<?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; ?>
Vorrei visualizzare il titolo del post ecc. qui ma quando ho provato a farlo come sopra non ha mostrato nulla. Come posso accedere alle informazioni del post?
Innanzitutto, non utilizzare e abusare della variabile globale $wp_query
. Questa variabile globale dovrebbe essere riservata solo alla query principale. Usa qualsiasi altra variabile che non crei conflitti.
In secondo luogo, non utilizzare le proprietà grezze di WP_Post
. Queste sono grezze e non filtrate. WP_Query
imposta i postdata per default, il che rende possibile l'uso dei tag del template.
In terzo luogo, sempre resetta tutte le istanze di WP_Query
per evitare conflitti con altre query sulla stessa pagina.
In quarto luogo, hai un errore di sintassi in questa riga <?php echo $wp_query->post_title.'<br>';
. Manca il tag di chiusura php.
Puoi riscrivere il tuo codice in questo modo:
$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();
}
MODIFICA
Se hai bisogno di accedere direttamente alle proprietà di WP_Post
, puoi usare ad esempio
echo apply_filters( 'the_content', $query->post_content );
per visualizzare il contenuto del post,
echo apply_filters( 'the_title', $query->post_title );
visualizzerà il titolo del post. Lo stato del post può essere accessibile con
$query->post_status
Vedi una lista di tutte le proprietà disponibili qui
Ricorda che ci sono tag del template disponibili durante il loop per visualizzare queste informazioni senza utilizzare le proprietà di WP_Post

Piccolo errore nel tuo codice. Una volta iniziato il loop (cosa che fai dopo aver impostato $wp_query->the_post();
) puoi iniziare ad accedere al contenuto del tuo post utilizzando i tag template di WordPress. Quindi, se vuoi mostrare un titolo e il contenuto, dovrebbe apparire così:
<?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; ?>
Ti consiglio di leggere la documentazione su WP_Query
e i tag template.

E se volessi accedere a più elementi, come post_status e cose simili?
