‘Versuch, Eigenschaft von Nicht-Objekt zu erhalten’, wenn WP_Query mit ‘Felder’ => ‘IDs’ verwendet wird

In einem Versuch, meine Abfrage zu beschleunigen, verwende ich die folgenden Argumente:

$args = array( 'post_type' => 'product', 'fields' => 'ids', ); $query = new WP_Query($args); 

Während dies ein Array von IDs wie erwartet Trying to get property of non-object in /wp-includes/query.php , erhalte ich mehrere Trying to get property of non-object in /wp-includes/query.php Hinweise zu bekommen. Das passiert sogar, wenn ich nichts anderes als the_post() in meiner while the_post() :

 if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); endwhile; endif; 

Ist the_post() verursacht? Irgendeine Idee, warum ich diese Hinweise bekomme?

Solutions Collecting From Web of "‘Versuch, Eigenschaft von Nicht-Objekt zu erhalten’, wenn WP_Query mit ‘Felder’ => ‘IDs’ verwendet wird"

the_post platziert das nächste Post-Objekt aus $query->posts im globalen $post und ruft setup_postdata , das annimmt, dass $post ein Post-Objekt ist, wenn er auf Member-Vars dieses Objekts setup_postdata , von wo die Fehler kommen.

In diesem Fall ist $posts nur ein Array von IDs anstelle von Post-Objekten. Wenn Sie über die Ergebnisse iterieren möchten, können Sie einen foreach für $posts :

 $args = array( 'post_type' => 'product', 'fields' => 'ids', ); $query = new WP_Query($args); if ($query->have_posts()): foreach( $query->posts as $id ): echo 'ID: ' . $id; endforeach; endif;