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.