Accesarea conținutului postării cu WP_Query
Am următorul cod dintr-un șablon pentru a vedea și a obține informațiile postării:
<?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; ?>
Aș dori să afișez titlul postării și altele, dar când am încercat să o fac ca mai sus nu s-a afișat nimic. Cum pot accesa informațiile postării?
În primul rând, nu utilizați și abuzați variabila globală $wp_query
. Această variabilă globală ar trebui rezervată doar pentru interogarea principală. Folosiți orice altă variabilă care nu va crea conflicte.
În al doilea rând, nu utilizați proprietățile brute ale WP_Post
. Acestea sunt brute și nefiltrate. WP_Query
configurează implicit datele postului, ceea ce face posibilă utilizarea etichetelor de șablon.
În al treilea rând, întotdeauna resetați toate instanțele de WP_Query
pentru a evita conflictele cu alte interogări pe aceeași pagină.
În al patrulea rând, aveți o eroare de sintaxă în această linie <?php echo $wp_query->post_title.'<br>';
. Lipsește închiderea tag-ului PHP.
Puteți rescrie codul în felul următor:
$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();
}
EDITARE
Dacă aveți nevoie să accesați direct proprietățile WP_Post
, puteți utiliza, de exemplu:
echo apply_filters( 'the_content', $query->post_content );
pentru a afișa conținutul postului,
echo apply_filters( 'the_title', $query->post_title );
va afișa titlul postului. Starea postului poate fi accesată prin
$query->post_status
Consultați o listă cu toate proprietățile disponibile aici.
Trebuie să rețineți că există etichete de șablon disponibile în timpul buclei pentru a afișa aceste informații fără a utiliza proprietățile WP_Post
.

Am pus aceeași întrebare mai jos: Ce se întâmplă dacă vreau să accesez mai multe detalii, cum ar fi post_status și alte asemenea? Este o idee bună să folosesc WP_Query în acest fel pentru asta?

O mică eroare în codul tău. Odată ce ai început bucla (pe care o faci după setarea $wp_query->the_post();
), poți începe să accesezi conținutul postării folosind tag-urile de șablon WordPress. Deci, dacă ai vrea să afișezi un titlu și conținut, ar arăta astfel:
<?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; ?>
Recomand să citești mai multe despre WP_Query
și tag-urile de șablon.

Dar dacă vreau să accesez mai multe elemente, cum ar fi post_status și alte lucruri de genul acesta?
