web-dev-qa-db-de.com

Wann ist eine if-Anweisung nach get_posts zu verwenden?

Beim Durchsuchen des Codex für die Funktion get_posts ist mir aufgefallen, dass in den meisten Beispielen nach dem Aufruf von get_posts keine if-Anweisung angezeigt wird.

Beispiel:

<?php
$args = array( 'posts_per_page' => 10, 'order'=> 'ASC', 'orderby' => 'title' );
$postslist = get_posts( $args );
foreach ( $postslist as $post ) :
  setup_postdata( $post ); ?> 
    <div>
        <?php the_date(); ?>
        <br />
        <?php the_title(); ?>   
        <?php the_excerpt(); ?>
    </div>
<?php
endforeach; 
wp_reset_postdata();
?>

Und:

<?php
$args = array( 'post_type' => 'attachment', 'posts_per_page' => -1, 'post_status' =>'any', 'post_parent' => $post->ID ); 
$attachments = get_posts( $args );

**if ( $attachments ) {**
    foreach ( $attachments as $attachment ) {
    echo apply_filters( 'the_title' , $attachment->post_title );
    the_attachment_link( $attachment->ID , false );
    }
}
?>

Ich bin mir nicht sicher, ob der Kodex davon ausgeht, dass Sie immer Beiträge haben werden, also keine Notwendigkeit zu überprüfen?

Ich persönlich benutze es immer, aber ich frage mich, ob mich jemand aufklären könnte, wenn es nötig ist. Wann ist der richtige Zeitpunkt, um die if-Anweisung zu verwenden?

1
Malisa

Meiner Meinung nach können wir für eine bestimmte Anfrage nicht garantieren, dass der Beitrag in db existiert. Vielleicht gibt es ein leeres Array zurück. Daher empfiehlt es sich, die bedingte Anweisung zu verwenden. Außerdem denke ich, dass wir es mit einem Array zu tun haben. Um das leere Array zu überprüfen, sollten wir die Funktion php empty verwenden.

zum Beispiel:

if ( !empty( $attachments ) ) {
  foreach ( $attachments as $attachment ) {
   // do some stuff here.
  }
}
else {
  _e('Sorry! No posts found.');
}
3
Anwer AR

Die get_posts() kann ein leeres Array zurückgeben

In diesem Fall sieht die foreach-Schleife folgendermaßen aus:

foreach ( [] as $post ) 
{
    // ...
}

wo gibt es nichts zu durchlaufen. Dieser Code ist gültig.

Wenn das Code-Snippet wie folgt lautet:

echo '<ul>';
foreach ( $postslist as $post ) 
{
    // <li>...</li>
}
echo '</ul>';

dann müssen wir überprüfen, ob $postslist nicht leer ist:

if( $postslist )
{   
    echo '<ul>';
    foreach ( $postslist as $post ) 
    {
        // <li>...</li>
    }
    echo '</ul>';
}

um zu vermeiden, dass eine leere <ul></ul>-Liste angezeigt wird.

Dies ist ein Beispiel unter vielen, in dem es sinnvoll ist zu überprüfen, ob die Beitragsliste nicht leer ist, aber nicht erforderlich ist, zum Beispiel, wenn Sie nur die Anzahl benötigen:

echo count( (array) $postslist );
1
birgire