/*
 *  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.