WordPressでプラグインを使わずにサイトマップを表示させる方法を紹介します。


まずは準備として、サイトマップを表示させるための固定ページを用意します。

本文は何も入力しなくても大丈夫ですが、この際にページスラッグを「sitemap」に変更します。

次に、現在のテーマファイルのpage.php内の<?php the_content(); ?>の下に次のコードを追加します。

<?php if (is_page('sitemap')) { ?>
//ここに後述のコードを追加することになります。
<?php }; ?>

これは条件分岐用のコードで、固定ページのスラッグが「sitemap」だった場合にのみ実行するコードを書くためのものです。
これでサイトマップの固定ページを表示した際に、以下に紹介する任意のプログラムを実行させるわけです。


以上までの準備はできましたか?

次はいよいよ、サイトマップを表示させる各PHPプログラムを紹介していきます。

記事を一覧表示させる。

カテゴリー別に分けず、記事をずらっと並べて表示するコードです。WordPressを導入して日が浅く、記事数が少ないときはこの設定がいいかもしれません。

<?php if (is_page('sitemap')) { ?>
<h3>記事一覧</h3>
<ul>
<?php get_archives('postbypost','','html'); ?>
</ul>
<?php }; ?>

カテゴリー別に分けて記事一覧を表示させる。

カテゴリー別に分けて記事一覧を表示するコードです。

<?php if (is_page('sitemap')) { ?>
<?php
$args=array('orderby' => 'name', 'order' => 'ASC' );
$categories=get_categories($args);
foreach($categories as $category) {echo '<h3><a href="' . get_category_link( $category-<term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '"' . '>' . $category->name.'</a></h3>';
?>
<ul>
<?php
global $post;$myposts = get_posts('numberposts=100&category=' . $category->term_id);
foreach($myposts as $post) : setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
<?php }; ?>
<?php }; ?>

固定ページの一覧を表示させる。

続いて、固定ページの一覧を表示するコードです。

<?php if (is_page('sitemap')) { ?>
<h3>固定ページ</h3>
<ul>
<?php get_archives('postbypost','','html'); ?>
</ul>
<?php }; ?>

固定ページに続いて、記事の一覧を表示させる。

固定ページ一覧を表示して、その下にズラっと記事一覧を表示させる場合のコードです。

<?php if (is_page('sitemap')) { ?>
<h3>固定ページ</h3>
<ul>
<?php wp_list_pages('title_li='); ?>
</ul>
<h2>記事一覧</h2>
<ul>
<?php get_archives('postbypost','','html'); ?>
</ul>
<?php }; ?>

月別アーカイブを表示させる。

月別アーカイブを表示するコードです。

<?php if (is_page('sitemap')) { ?>
<h3>月別アーカイブ</h3>
<ul>
<?php wp_get_archives( 'type=monthly' ); ?>
</ul>
<?php }; ?>

以上になります。
プログラムの知識がなくても、紹介した各コードをコピペするだけで実装できますので、ぜひお試しください。