WordPress: la funzione the_post() in dettaglio

WordPress: la funzione the_post() in dettaglio

La funzione di WordPress the_post() è di fatto la funzione più usata nei temi ma anche quella meno conosciuta. Sappiamo tutti che la funzione va usata per inizializzare il Loop, ma quali sono le sue routine interne? Vediamole insieme.

Questa funzione viene definita ne file core wp-includes/query.php. Il file in questione contiene la definizione della celebre classe WP_Query, ossia il motore del Loop di WordPress.

the_post() viene definita sia come funzione indipendente dalla classe sopracitata, sia come metodo di WP_Query. Infatti la funzione che siamo soliti usare si basa sul seguente codice:


/**
	 * Sets up the current post.
	 *
	 * Retrieves the next post, sets up the post, sets the 'in the loop'
	 * property to true.
	 *
	 * @since 1.5.0
	 * @access public
	 * @uses $post
	 * @uses do_action_ref_array() Calls 'loop_start' if loop has just started
	 */
	function the_post() {
		global $post;
		$this->in_the_loop = true;

		if ( $this->current_post == -1 ) // loop has just started
			do_action_ref_array('loop_start', array(&$this));

		$post = $this->next_post();
		setup_postdata($post);
	}

WP_Query::the_post() imposta innanzitutto un flag booleano ad indicare che ci si trova nel Loop. Quindi verifica che il Loop sia iniziato e imposta il post corrente spostandosi di volta in volta al post successivo.

La funzione che invece siamo soliti usare richiama il metodo sopracitato in questo modo:


/**
 * Iterate the post index in the loop.
 *
 * @see WP_Query::the_post()
 * @since 1.5.0
 * @uses $wp_query
 */
function the_post() {
	global $wp_query;

	$wp_query->the_post();
}

$wp_query è un istanza della classe WP_Query, ossia è come se avessimo scritto:


$wp_query = new WP_Query();

Tenete comunque presente che questa classe, per motivi di retrocompatibilità, non usa la notazione object-oriented corrente di PHP 5 ma quella di PHP 4.

Torna su