it-swarm.com.de

Zeige den Auszug nur für den ersten Beitrag in der Suchanfrage

Ich möchte nur den Auszug für den ersten Beitrag in meiner Hauptabfrage anzeigen. Ich habe mich gefragt, wie ich das am besten angehen kann.

Was ich bisher ausprobiert habe ist:

  1. Erstellen einer benutzerdefinierten Startseite und Verwenden von zwei Abfragen, von denen eine einen Beitrag mit einem Auszug und eine andere einen Beitrag ohne einen Auszug zurückgibt.
  2. Verwenden Sie einfach die Standardabfragen, aber css, um die Auszüge für alle Beiträge außer dem ersten mit nth-child auszublenden.

Beide funktionieren gut genug, aber ich habe mich gefragt, ob es einen besseren Weg gibt, dies durch eine Funktion oder einen Filter zu tun.

Vielen Dank!

1
justinw

Sie können $wp_query->current_post in Ihrer Schleife verwenden, um den aktuellen Beitrag zu überprüfen. Sie brauchen nicht zwei Loops, einer erledigt den Trick. Wenn Sie einen Auszug nur für den ersten Post benötigen, können Sie so etwas tun. Denken Sie daran, der erste Beitrag in der Schleife ist 0 und nicht 1.

if ( !$wp_query->current_post > 0 ) :
   the_excerpt();
else :
   <--- DO SOMETHING ELSE FOR OTHER POSTS
endif;

Überprüfen Sie für alle WP_Post Mitgliedsvariablen den im Codex angegebenen Link

3
Pieter Goosen

Sie können es mit einem Zähler einstellen. Verwenden der Standardschleife als Beispiel:

<?php
  $firstExcerpt = 0; // Set the variable to 0 so we can check for it later.
  if ( have_posts() ) : while ( have_posts() ) : the_post();
?>

  <h2><?php the_title(); ?></h2>
  <?php
    if ($firstExcerpt < 1) { // Check if it's been displayed
      the_excerpt();
      $firstExcerpt++; // Changes the variable so that next time, it won't show
    };
  ?>

<?php endwhile; endif; ?>
2
Arkuen

Was ist mit etwas Einfachem wie:

$i = 1;
if( have_posts() ) {
    while( have_posts() ) {
        the_post();
        if( 1 == $i ) {
            the_excerpt();
        }
       // the rest of your loop
       $i++;
    }
}
1
Pat J