WordPress liefert leider standardmäßig keine Benutzer-Sitemap mit. Es gibt einige Plugins mit dieser Funktion, jedoch bevorzuge ich den KISS (Keep it smart and simple) Ansatz, der lieber mit ein paar Zeilen schlankem Code die Sache eleganter löst als das x-te Plugin, dass im Zweifelsfall irgendwann nicht mehr unterstützt wird oder Probleme durch Konflikte mit anderen Plugins verursacht.
Glücklicherweise kann man dies mit relativ geringem Aufwand umsetzen:
Wir fügen eine Datei mit dem Namen page-sitemap.php und folgendem Inhalt
<?php /*Template Name: Sitemap Page*/ ?> <?php get_header(); ?> <section id="content" role="main"> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <header class="header"> <h1 class="entry-title"><?php the_title(); ?></h1> </header> <section class="entry-content"> <?php if ( has_post_thumbnail() ) { the_post_thumbnail(); } ?> <?php get_template_part('/partials/sitemap'); ?> <?php the_content(); ?> </section> </article> <?php endwhile; endif; ?> </section> <?php get_footer(); ?>
meinem Theme unter
/wp-content/meintheme/
hinzu. Dazu kommt noch die Datei sitemap.php unter
/wp-content/partials/
mit folgendem Inhalt hinzu:
<h2>Seiten:</h2> <ol> <?php wp_list_pages( array( 'order' => 'ASC', 'orderby' => 'title', 'exclude' => '', 'title_li' => '', ) ); ?> </ol> <h2>Beiträge:</h2> <ol> <?php $args = array( 'posts_per_page' => 10000, 'order'=> 'ASC', 'orderby' => 'title' ); $postslist = get_posts( $args ); foreach ( $postslist as $post ) : setup_postdata( $post ); ?> <li> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </li> <?php endforeach; wp_reset_postdata(); ?>
Danach geht man in WordPress Admin in die Sektion „Seiten“ und erstellt eine neue Seite. Nun kann man rechts in der Seitleiste im Abschnitt „Attribute“ das Template auswählen. Hier kann man nun „Sitemap Page“ auswählen. Die Seite selbst kann im Grunde leer bleiben, denn der obige Code generiert autmatisch alphabetisch absteigend zwei geordnete Listen mit allen Beiträge und Seiten aus WordPress getrennt gelistet. Natürlich kann man den Code nach eigenen Anforderungen beliebig anpassen, Post typen auslassen oder andere noch hinzu nehmen, Sortierungen ändern usw. Demo des oben beschriebenen Codes hier: Plastikschnitzer@code Sitemap.