6. Dezember 2020

WordPress:
Große Anzahl an Posts mit WP_Query() abfragen

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 ...
}