post__in – Platzieren von Inhalt aus einer foreach-Schleife innerhalb eines Arrays

Ich weiß, dass dieser Code falsch ist, aber es ist eine Grundlage dessen, was ich erreichen möchte.

Ich analysiere einen XML-Feed über PHP und führe eine foreach-Schleife aus, um einen Wert von einem bestimmten Schlüssel zu erhalten.

Hier ist das Snippet, das ich verwende:

$feed = file_get_contents("https://www.feedurl.com/xml"); // Feed URL $xml = new SimpleXmlElement($feed); $output = array(); foreach($xml->entry as $entry){ $attributes = $entry->id->attributes(URI_RSS); $im = $entry->children(URI_RSS); // Get item's ID $id = $entry->id; $attr = $id->attributes('im', TRUE); $output[] = $attr['id']; } $testarray = "'" . implode("', '", $output) . "'"; // Place the 'output' from the foreach into this formation: 'xxx','xxx','xxx',etc $lastarray = array($testarray); $args = array( 'post_type' => $post_type, 'post__in' => $lastarray ); $wp_query = new WP_Query( $args ); 

Wenn ich ‘$ testarray’ zurücksende, wird es korrekt in der Weise angezeigt, wie ich es eingerichtet habe: ‘xxx’, ‘xxx’, ‘xxx’, etc

Es ist jedoch nicht möglich, ‘$ testarray’ als Array für ‘post__in’ zu platzieren. Ich weiß sicher, dass mein Code nicht richtig eingestellt ist und bin mir nicht sicher, wie ich das machen würde.

Das ‘post__in’ wird paginiert und über eine Endlosschleife geladen.

Vielen Dank! Joe.

Solutions Collecting From Web of "post__in – Platzieren von Inhalt aus einer foreach-Schleife innerhalb eines Arrays"

Betrachten Sie Ihren Code – $ lastarray ist kein Array von IDs (wie Sie vielleicht erwarten), sondern ein Array mit einem einzelnen Element, das eine Folge von durch Komma getrennten IDs enthält.

$ output ist bereits ein Array von $ attr [‘id’] – versuch Kommentare (add // zum Start) zu den Zeilen, die mit $testarray und $lastarray und 'post__in' => $lastarray durch 'post__in' => $output

Sehen Sie, ob das hilft.

Edit: um zu klären – post__in erwartet ein Array (anstatt ‘ID’, ‘ID’, ‘ID’ String) – siehe hier

Jon

Update um zu wissen, dass ich dies mit diesem Snippet unten erreichen konnte:

Als Referenz:

 $jsonfeed = file_get_contents('http://www.jsonfeed.com'); $results = json_decode($top100, true); foreach($results['feed']['entry'] as $post){ // This is custom for my json $post_ids[] = $entry['id']['attributes']['second_id']; } var_dump($post_ids); // dump array $args = array( 'post_type' => $post_type, 'post__in' => $post_ids, 'ignore_sticky_posts' => 1, ); $wp_query = new WP_Query( $args ); if (have_posts()) : usort($wp_query->posts, function($a, $b) use ($post_ids) { // Lists loop in order of the array -> http://pastebin.com/3vwiDSfb return array_search($a->ID, $post_ids) - array_search($b->ID, $post_ids); }); while(have_posts()) : the_post(); endwhile; endif; 

Danke für alles, was geholfen hat.