/*
 *  GIBT POSTS ALS ARRAY ZURÜCK
 * 
 *  $loop_args -> Ein Array mit den standard Argmuenten von Wordpress
 * 
 *  return -> Ein Array mit den Posts
 */

function get_posts_as_array( $loop_args = array() ) {
	// Ausgabe Array
	$posts_output = array();	
	
	
	// LOOP ARGUMENTS	
	$defaults = array( 
		'category_name'  => 'Allgemein'
		'posts_per_page' => 50, 
	);
	$post_loop_args = wp_parse_args( $loop_args, $defaults );
	
	
	// EVENT LOOP
	$post_loop = new WP_Query( $post_loop_args );
	while ( $post_loop->have_posts() ) : $post_loop->the_post();
		$single_post_id = get_the_id();
		$single_post    = array( // Event Daten
			'id'       => $single_post_id,
			'title'    => get_the_title( $single_post_id ),
			'content'  => get_the_content( $single_post_id ),
			'thumb_id' => get_post_thumbnail_id( $single_post_id ),
			'date'     => get_the_date( 'd. m. Y', $single_post_id ),
			'meta'     => array(
				// Sub-Array zum Post sind auch möglich um z.b.
				// eigene Optionen aus 'Custom Fields' oder Metaboxen speichern
				// 'EIGENE_OPTIONEN' => get_custom_field(),
			),
		);
		
		// aktuellen Post an Array anfügen
		array_push( $posts_output, $single_post );
		
	endwhile;
	
	// POST-ARRAY MANIPULATION
	// hier könnte noch Code eingefügt werden um das Array
	// Nachträglich zu verändertn, z.B. anders sortieren
	// asort( $posts_output );
	
	
	// RETURN
	return $posts_output;
};
Die Funktion sollte über die functions.php eingebunden sein
// POSTS ALS ARRAY
$posts_array = get_posts_as_array();


// NUR ANHÄNGE
$args = array(
	'post_type' => 'attachment',
)
$attachment_array = get_posts_as_array( $args );


// POSTS DER AKTUELLEN SEITE ( wegen Pagination) und
// als JSON ( um es in Javascript zu nutzen )
$args = array(
	'paged'     => get_query_var('paged'),
)
$posts_json_current_page = json_encode( get_posts_as_array( $args ) );
Anwendungsbeispiele, der Fantasie sind keine Grenzen gesetzt

WordPress Posts als Array speichern

Der WordPress Loop ist aus seiner Historie heraus super, um klassische Blog & News Beiträge zu generieren. Manchmal möchte man seine Template PHP Files aber nicht mit Loops zu kleistern, oder mag einfach ordentlichen Code haben. Dann kann es nützlich sein, Posts als Array nach dem Query zu speichern.

Das Code-Beispiel hier kann in die functions.php eingebaut werden, oder über diese verwiesen werden. Damit bekommt man eine Funktion, welche überall auf der Seite aufgerufen werden kann, z.B. in Sidebars oder Javascript-Widgets. Die Funktion ist jetzt nur ein Beispiel und kann frei angepasst werden.

Die Struktur der Funktion:

  • $defaults – Hier kann man Argumente für den Loop Voreinstellen, falls man z.b. immer 50 Posts aus der Kategorie ‚allgemein‘ haben will
  • $post_loop_args – Ist das Array mit den finalen Query Variablen, da die $defaults über den Funktionsaufruf überschrieben werden können ( siehe 2. Beispiel )
  • $single_post_id – speichert nur die ID des aktuellen zu bearbeitenden Post in der Schleife, dass die Funktion nicht 10x aufgerufen wird
  • $single_post – Ist ein einzelner Post der im Array gespeichert wird. Das ist eine Beispiel-Struktur und kann frei angepasst werden
  • array_push() – fügt das $single_post Array an das große Array an, welches von der Funktion zurück gegeben wird

Das Post Array, welches die Funktion zurück gibt, kann dann an eure eigenen HTML Render Funktionen übergeben werden oder anders genutzt werden. Es ist aber wesentlich einfacher ( meiner Meinung nach ) mit einem Array zuarbeiten als mit einem regulärem Post-Loop.