Will man eine große Anzahl an Posts abfragen oder bearbeiten stößt man irgendwann an das PHP-Speicherlimt, da nicht alle Posts gleichzeitig im WP_Query Object geladen werden können. Mit der folgenden optimierten WP_Query-Abfrage kann man dieses Problem umgehen und tausende oder sogar zehntausende Posts abfragen:
<?php
// Query vorbereiten
$args=array(
'post_type' => 'my_post_type', // optional
'post_status' => 'publish', // optional
'fields' => 'ids', // nur Post-IDs laden
'nopaging' => true, // keine Pagination, alle Posts abfragen
'no_found_rows' => true, // Posts nicht zählen
'cache_results' => false, // Posts nicht im Cache ablegen
'update_post_meta_cache' => false, // Meta-Cache nicht füllen
'update_post_term_cache' => false // Term-Cache nicht füllen
);
// Query durchführen
$wp_query=new WP_Query($args);
// Alle Posts durchgehen
foreach ($wp_query->posts as $post_id)
{
// Post laden
$post=get_post($post_id);
// ... Post verarbeiten ...
}