404

Esistono diversi plugin di wordpress per le sitemap in HTML, tuttavia nessuno di loro permette di includere la sitemap nella pagina di errore 404

Inoltre, tutti i plugin testati hanno difficoltà a mostrare la sitemap con un elevato numero di post e ad includere i tipi di pagine e di post personalizzati.

Per risolvere a manina, creiamo un file che chiameremo sitemap.php ed incolliamoci il seguente codice:

<h2 id="authors">Autori</h2>
<ul>
<?php
wp_list_authors(
  array(
    'exclude_admin' => false,
  )
);
?>
</ul>

<h2 id="pages">Pagine</h2>
<ul>
<?php
// Add pages you'd like to exclude in the exclude here
wp_list_pages(
  array(
    'exclude' => '',
    'title_li' => '',
  )
);
?>
</ul>

<h2 id="posts">Articoli</h2>
<ul>
<?php
// Add categories you'd like to exclude in the exclude here
$cats = get_categories('exclude=');
foreach ($cats as $cat) {
  echo "<li><h3>".$cat->cat_name."</h3>";
  echo "<ul>";
  query_posts('posts_per_page=-1&cat='.$cat->cat_ID);
  while(have_posts()) {
    the_post();
    $category = get_the_category();
    // Only display a post link once, even if it's in multiple categories
    if ($category[0]->cat_ID == $cat->cat_ID) {
      echo '<li><a href="'.get_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a></li>';
    }
  }
  echo "</ul>";
  echo "</li>";
}
?>
</ul>

Salviamo poi il file in una sottocartella del tema (ad esempio /partial/sitemap.php), questo ci permetterà di richiamare la sitemap in un qualsiasi template di pagina.

Ora possiamo richiamare la nostra sitemap usando una sola riga di codice:

<?php get_template_part('/partials/sitemap'); ?>

e così faremo nel template della pagina 404 del nostro tema wordpress.

Creiamo il template per la mappa del sito

Per creare un nuovo template di pagina, duplichiamo il file page.php contenuto all’interno della cartella del tema e rinominiamo la copia come page-sitemap.php e apriamola per l’editing.

Cambiamo le prime righe con il commento che ci permetterà di riconoscere il nostro template:

/*
Template Name: Sitemap Page
*/

Subito dopo la chiamata a the_content() richiamiamo la nostra funzione get_template_part()

Così facendo, qualsiasi pagina che userà il template Sitemap Page riporterà dopo il contenuto la nostra mappa del sito.

1 commento

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento