プラグインなしでWordPressに自作サイトマップを追加

WordPressでサイトマップ(人間用)を自作した時の方法です。プラグイン不要です。モジュールテンプレート(loop-page.phpなど)へのコピペと固定記事を作成するだけです。

サイトマップ用固定ページ

固定ページの作成

  1. サイトマップを表示するための固定ページを作成します。

  2. 本文は何も入力しなくてもいいです。

  3. ページ作成後、ページスラッグを「sitemap」に変更します(新規投稿時はページスラッグを指定できないので)。

サイトマップ用コードを追加する場所

  1. 現在のテーマの、loop-page.php(もしくはpage.php)内の<?php the_content(); ?>の下に次のコードを追加します。

    <?php if (is_page('sitemap')) { ?>
    //ここに後述のコードも追加します
    <?php }; ?>
  2. これは条件分岐用のコードです。固定ページのスラッグが「sitemap」だった場合にのみ実行するコードを書くためのものです。なお、以降は便宜上グレーで記述します。

記事一覧を表示

ずらっと表示(カテゴリー分けなし)

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

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

カテゴリー別で記事一覧を表示

  1. カテゴリー別に分けて記事一覧を表示するコードです。親カテゴリーと子カテゴリーを区別せず表示されます。

    <?php if (ispage('sitemap')) { ?>
    <?php
    $args=array('orderby' => 'name', 'order' => 'ASC' );
    $categories=getcategories($args);

    foreach($categories as $category) {echo '<h2><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf(
    ( "View all posts in %s" ), $category->name ) . '"' . '>' . $category->name.'</a></h2>';
    ?>

    <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 }; ?>

抜粋も表示

  1. カテゴリー別に分けて記事一覧を表示し、同時にそれぞれの記事の抜粋も表示するコードです。親カテゴリーと子カテゴリーを区別せず表示されます。

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

固定ページ一覧を表示

  1. 固定ページの一覧を表示するコードです。

    <?php if (is_page('sitemap')) { ?>
    <h2>固定ページ</h2>
    <ul>
    <?php wp_list_pages('title_li='); ?>
    </ul>
    <?php }; ?>
  2. 記事一覧をずらっと表示し、その下に固定ページ一覧を表示する場合のコードです。

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

月別アーカイブを表示

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

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

リンク

他サイトの参考になるページへのリンクです。日付は各ページの公開日もしくは最終更新日です(2012年1月現在)。ありがとうございます。

コンパス写真 by ソザイング