Accediendo al contenido de las entradas con WP_Query
Tengo el siguiente código de una plantilla para obtener la información de las entradas:
<?php
$args = array(
'post_type' => 'post', // tipo de post
'posts_per_page' => $count, // número de posts por página
'paged' => $paged, // número de página actual
);
$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; ?>
Me gustaría mostrar el título de la entrada pero cuando intento hacerlo como se muestra arriba no muestra nada. ¿Cómo puedo acceder a la información de la entrada?

En primer lugar, no uses ni abuses de la variable global $wp_query
. Esta global debe reservarse únicamente para la consulta principal. Utiliza cualquier otra variable que no cause conflictos.
En segundo lugar, no uses las propiedades WP_Post
sin filtrar. Estas son crudas y sin filtrar. WP_Query
sí establece los datos de la publicación por defecto, lo que permite usar las etiquetas de plantilla.
En tercer lugar, siempre reinicia todas las instancias de WP_Query
para evitar conflictos con otras consultas en la misma página.
En cuarto lugar, tienes un error de sintaxis en esta línea <?php echo $wp_query->post_title.'<br>';
. Te falta la etiqueta de cierre de PHP.
Puedes reescribir tu código de la siguiente manera:
$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();
}
EDITAR
Si necesitas acceder directamente a las propiedades de WP_Post
, puedes usar por ejemplo:
echo apply_filters( 'the_content', $query->post_content );
para mostrar el contenido de la publicación,
echo apply_filters( 'the_title', $query->post_title );
mostrará el título de la publicación. El estado de la publicación se puede acceder con:
$query->post_status
Consulta una lista de todas las propiedades disponibles aquí.
Recuerda que existen etiquetas de plantilla disponibles durante el bucle para mostrar esta información sin usar las propiedades de WP_Post
.

Pequeño error en tu código. Una vez que has iniciado tu bucle (lo cual haces después de establecer $wp_query->the_post();
), entonces puedes comenzar a acceder al contenido de tu publicación usando las etiquetas de plantilla de WordPress. Así que si quisieras mostrar un título y contenido, se vería así:
<?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; ?>
Te recomiendo leer sobre WP_Query
y las etiquetas de plantilla.

¿Qué pasa si quiero acceder a más cosas, como el post_status y cosas por el estilo?
