Was ist der Unterschied zwischen “get_posts” und “wp_get_recent_posts” bei Verwendung mit “setup_postdata”?

Dies könnte eine Frage vom Typ “Ich bin noch neu für WP” sein, aber ich stieß auf eine interessante Ausgabe, wenn ich get_posts() und wp_get_recent_posts() in einer benutzerdefinierten function verwendete, die ich mit setup_postdata() . Hier ist, was ich in meiner functions.php Datei hatte:

  $total_posts, 'post_type' => 'post', 'post_status' => 'publish' ); $posts = get_posts($args); foreach ($posts as $post) { setup_postdata($post); echo '
'; the_title(); echo '
'; } wp_reset_postdata(); }

Einfach, oder? Und diese function funktioniert super und wirft Titel innerhalb von div Tags perfekt aus. Aber wenn ich die Zeilen 7-12 durch folgendes ersetze:

  ... $args = array( 'posts_per_page' => $total_posts, //'post_type' => 'post', 'post_status' => 'publish' ); $posts = wp_get_recent_posts($args); ... 

… dann scheint die function nicht korrekt durch die Posts zu “iterieren” und wirft den ersten Post, den sie findet, immer wieder heraus, ähnlich wie wenn Sie den global $post zu Beginn der function verwenden.

Warum ist das? Gibt es etwas anderes, was wp_get_recent_posts() tut, was ich noch nicht verstehe wp_get_recent_posts()

Solutions Collecting From Web of "Was ist der Unterschied zwischen “get_posts” und “wp_get_recent_posts” bei Verwendung mit “setup_postdata”?"

Wenn Sie sich die Quelle von setup_postdata() Sie feststellen, dass ein Objekt ( $post ) übergeben werden muss, nicht ein Array.

wp_get_recent_posts() ( source ) gibt standardmäßig (für die Rückwärtskompatibilität von pre 3.1) jeden Post als Array zurück. Das zweite optionale Argument, das an wp_get_recent_posts() kann, kann dies verhindern:

$posts = wp_get_recent_posts( $args, OBJECT_K )

(Obwohl ein anderer Wert als ARRAY_A im zweiten Argument ARRAY_A ).