WordPress: generare una mappa del sito

WordPress: generare una mappa del sito

Possiamo creare una sitemap delle pagine del nostro sito utilizzando dei filtri da applicare alla funzione wp_list_pages(). Questo รจ l'approccio utilizzato dal plugin HTML Page Sitemap che andremo ad analizzare in questo articolo.

Il plugin aggiunge uno shortcode da inserire in una nuova pagina di WordPress:


function html_sitemap_shortcode_handler( $args, $content = null )
{
	if( is_feed() )
		return '';
		
	$args['echo'] = 0;
	$args['title_li'] = '';
	unset($args['link_before']);
	unset($args['link_after']);
	if( isset($args['child_of']) && $args['child_of'] == 'CURRENT' )
		$args['child_of'] = get_the_ID();
	else if( isset($args['child_of']) && $args['child_of'] == 'PARENT' )
	{
		$post = &get_post( get_the_ID() );
		if( $post->post_parent )
			$args['child_of'] = $post->post_parent;
		else
			unset( $args['child_of'] );
	}
	
	$html = wp_list_pages($args);

	// Remove the classes added by WordPress
	$html = preg_replace('/( class="[^"]+")/is', '', $html);
	return '<ul>'. $html .'</ul>';
}

add_shortcode('html-sitemap', 'html_sitemap_shortcode_handler');

La funzione html_sitemap_shortcode_handler() filtra gli argomenti della funzione wp_list_pages() in modo da ricostruire l'esatta gerarchia delle pagine. Rimuove quindi la visualizzazione predefinita della lista di pagine, i link al suo interno e il titolo di ciascun livello. A questo punto stabilisce se la pagina ha un genitore o meno e in tal caso lo aggiunge all'array di parametri. La funzione si conclude infatti generando una stringa HTML ottenuta usando la funzione wp_list_pages() con i parametri filtrati.

Torna su