it-swarm.com.de

Zugriff auf den Beitragsinhalt mit WP_Query

Ich habe den folgenden Code aus einer Vorlage zum Anzeigen der Beitragsinformationen:

<?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; ?>

Ich möchte den Post-Titel usw. hier anzeigen lassen, aber als ich versuchte, es wie oben zu tun, zeigte es nichts an. Wie kann ich auf die Post-Informationen zugreifen?

2
user1048676

Verwenden und missbrauchen Sie zunächst nicht die globale Variable $wp_query. Dieses Global sollte nur für die Hauptabfrage reserviert werden. Verwenden Sie eine andere Variable, die keinen Konflikt verursacht.

Verwenden Sie zweitens nicht die raw WP_Post -Eigenschaften . Diese sind roh und ungefiltert. WP_Query richtet standardmäßig Postdaten ein, die die Verwendung der Template-Tags ermöglichen.

Drittens setzen Sie mit always alle Instanzen von WP_Query zurück, um Konflikte mit anderen Abfragen auf derselben Seite zu vermeiden

Viertens haben Sie einen Syntaxfehler in dieser Zeile <?php echo $wp_query->post_title.'<br>';. Ihnen fehlt ein abschließender PHP-Tag

Sie können Ihren Code so umschreiben

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

BEARBEITEN

Wenn Sie direkt auf die WP_Post -Eigenschaften zugreifen müssen, können Sie zum Beispiel verwenden

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

um den Beitragsinhalt anzuzeigen,

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

zeigt den Beitragstitel an. Auf den Post-Status kann über zugegriffen werden

$query->post_status

Liste aller verfügbaren Objekte anzeigen hier

Sie müssen sich daran erinnern, dass während der Schleife Vorlagen-Tags verfügbar sind, um diese Informationen anzuzeigen, ohne die WP_Post-Eigenschaften zu verwenden

3
Pieter Goosen

Leichte Fehler in Ihrem Code. Sobald Sie Ihre Schleife gestartet haben (was Sie tun, nachdem Sie $wp_query->the_post(); eingestellt haben), können Sie mit WordPress-Vorlagen-Tags auf Inhalte aus Ihrem Beitrag zugreifen. Wenn Sie also einen Titel und einen Inhalt anzeigen möchten, sieht dies folgendermaßen aus:

<?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; ?>

Ich würde empfehlen, die Tags WP_Query und template nachzulesen.

0
Jason Hoffmann