WordPressで簡単なサイトマップページを作れるショートコードの実装方法【プラグイン不要】

サイトマップ

先日、無料WordpressテーマCocoonの方に「サイトマップ機能」を実装しました。

そうしたら、思いのほか反響があり、こういった機能の需要が多かったのが分かりました。

おそらく、以下のような方が結構おられたのだと思われます。

サイトマップを1ページだけ生成するのにプラグインを入れるのも何だかなぁ…。

テーマの機能として手軽にパパっとサイトマップを作りたい。

先日実装したコードは、ショートコード機能なので、どのようなテーマにでも簡単に移植可能です。

なので、どんなテーマでも利用できるように「サイトマップショートコード機能」をコピペで簡単に実装できる方法を紹介したいと思います。

スポンサーリンク
レクタングル(大)広告

主な手順

サイトマップショートコードをテーマに利用するにあたって、やることはたったこれだけです。

  1. テーマのfunctions.phpにコードを貼り付ける
  2. 固定ページにショートコードを入力する

functions.phpに貼り付ける実装部分は、コピペするだけです。

テーマのfunctions.phpにコードを貼り付ける

まずは、テーマ(子テーマ)のfunctions.phpにサイトマップページを表示するための実装コード(ショートコード)を追記する形で貼り付けます。

//サイトマップショートコード
add_shortcode('sitemap', 'sitemap_shortcode');
if ( !function_exists( 'sitemap_shortcode' ) ):
function sitemap_shortcode( $atts, $content = null ) {
  extract( shortcode_atts( array(
    'page' => 1,
    'single' => 1,
    'category' => 1,
    'archive' => 0,
  ), $atts ) );
  ob_start();?>
  <div class="sitemap">
    <?php if ($page): ?>
    <h2>固定ページ</h2>
    <ul>
      <?php wp_list_pages('title_li='); ?>
    </ul>
    <?php endif; ?>
    <?php if ($single): ?>
    <h2>記事一覧</h2>
    <ul>
      <?php wp_get_archives( 'type=alpha' ); ?>
    </ul>
    <?php endif; ?>
    <?php if ($category): ?>
    <h2>カテゴリー</h2>
    <ul>
      <?php wp_list_categories('title_li='); ?>
    </ul>
    <?php endif; ?>
    <?php if ($archive): ?>
    <h2>月別アーカイブ</h2>
    <ul>
      <?php wp_get_archives('type=monthly'); ?>
    </ul>
    <?php endif; ?>
  </div>
  <?php
  return ob_get_clean();
}
endif;

たったこれだけ。特にコードの変更は必要ありません。

ただ、見出しはh2を利用しているため、テーマによっては「見出しのアウトライン」に合わせて変更する必要があるかもしれません(※見出し順が気になる場合)。

大抵のテーマであれば、h2で問題ないと思います。WordPress公式テーマの「Twenty Nineteen」でもh2で問題なかったので。

参考

上記コードは、以下のサイトマップページ作成方法を参考に、ショートコード用に変更しました。

こんにちはKiyokoです。 Wordpressでサイトを運営していく上でやったことを備忘録的にまとめていこうと思います。 それで今回はサイトマップについて。 サイトマップは、 ①人が見るため...

固定ページにショートコードを入力する

あとはサイトマップを表示させる固定ページに、以下のショートコードを貼るだけです。

[sitemap]

サイトマップショートコードを貼り付けた状態

すると、こんな感じでサイトマップが出力されます。

サイトマップ表示例

オプション

sitemapショートコードには、表示ページを変更する以下のオプションがあります。

  • page(固定ページ):default=1
  • single(投稿ページ):default=1
  • category(カテゴリーページ):default=1
  • archive(アーカイブページ):default=0

デフォルト状態では、以下のショートコードになります。

[sitemap page=1 single=1 category=1 archive=0]

1で表示、0で非表示になるので、出力するページをオプションで変更することができます。

詳細はこちら。

プラグインを使用せずともサイトマップを手軽に作成できるショートコードの使い方説明です。

表示例

ショートコードで実際に出力したサイトマップがこちら。

固定・アーカイブページは非表示になっています。

まとめ

今回のショートコード機能を実装することで、プラグイン不要でサイトマップを実装できます。

ただ、今回のサイトマップ出力は、非常に簡易的なものです。

なので凝ったサイトマップを作りたければ、プラグインを利用するか、さらなるコード改変が必要になるかと思います。

とはいえ、大抵のサイトであればサイトマップはGoogle XML Sitemaps等を用いてXML形式で検索エンジンに伝えていると思います。

そうであれば、SEO的な意味での「サイトマップページ」の作成であれば、これくらい簡易的なものでも十分(もしくは不要)かと個人的には思っています。

『WordPressで簡単なサイトマップページを作れるショートコードの実装方法【プラグイン不要】』へのコメント

  1. 名前:美遊☆彡 投稿日:2019/01/24(木) 15:09:15 ID:51fe3d37c

    こんにちは。
    プラグインでのサイトマップがうまく表示できずに困っていたので、非常に助かりました。
    しかも、すごく簡単だったので初心者の私でも簡単にできて、本当に嬉しかったです。

    本当に感謝!
    Twitterにてシェアさせていただきます!

  2. アバター画像 名前:わいひら 投稿日:2019/01/25(金) 13:21:47 ID:b4aca6ca4

    記事がお役に立てたのであれば嬉しいです!
    シェアありがとうございます。

  3. 名前:けんじ 投稿日:2019/02/03(日) 01:01:04 ID:7417aaac7

    わいひら様。お久しぶりです。
    こちらのソースコードを「https://candy.fun-net.biz/wordpress-sitemap-page-noneplugin/」で、引用したことで報告にきました。

    また、Cocoonでのフォーラムの使い方が分からなかったので、こちら申し訳ありません。コードを引用したわけではありませんが Cocoon Blocks を参考にブロックプラグインを作成したので、著作権侵害に当たらないようクレジット表記等は必要かと思いました。

    わいひら様は何処にどういった形で表記されるのが望ましいでしょうか?
    お忙しいところ恐れ入りますが、解答のほどよろしくお願いいたします。

  4. アバター画像 名前:わいひら 投稿日:2019/02/03(日) 23:21:26 ID:62ac0ecc6

    こんにちは、お久しぶりです。
    記事での紹介ありがとうございます。

    コードを引用したわけではありませんが Cocoon Blocks を参考にブロックプラグインを作成したので、著作権侵害に当たらないようクレジット表記等は必要かと思いました。

    僕が他者制作プラグイン等のコードを参考にした場合は、ソースコードのヘッダーコメント部分に以下に書かれているような表記を入れています。

    [テーマ名] WordPress Theme is derived from [派生元名] WordPress Theme, Copyright [派生元作品の完成年] [派生元作者名]
    [派生元名] WordPress Theme is distributed under the terms of the GNU GPL

    https://www.mirucon.com/2018/04/10/all-about-gpl/
    「発生元となったテーマのクレジット」部分のやつです(※今回はテーマじゃないのでプラグインに書き換える必要があるけど)。

    加えて、Readmeファイルに「参考にさせてもらったもの」として表記しています。

    強制ではありませんが、このように書いていただけたら、GPLなので自由に利用していただいて構いません。

  5. 名前:けんじ 投稿日:2019/02/06(水) 15:04:47 ID:49b329147

    ソースコードのコメントアウトとReadmeファイルへの表記了解しました。
    とても参考になりました。

    もう少し勉強してから質問すべき事だったかも知れません。
    すいません出直します。

    今回はどうもありがとうございました。

  6. アバター画像 名前:わいひら 投稿日:2019/02/06(水) 17:14:54 ID:4b2885b47

    もう少し勉強してから質問すべき事だったかも知れません。
    すいません出直します。

    全然、そういうつもりで書いたのではありません。
    僕だって、Cocoonを作るまでは知らなくて、調べてようやく知ったので。
    僕がやっている方法と参考にした記事を単に書いただけです。

  7. 名前:けんじ 投稿日:2019/02/06(水) 20:54:13 ID:49b329147

    すいません。気弱でネガティブな性格なので気を使わせてしまいました。

    今後とも参考にさせていただくこともありますが、よろしくお願いいたします。

    参考にさせてもらったソースの明確な記載方法は調べても、これといった正解が分からなかったので、今回プログラムを見直すいい機会が出来ました。

    ありがとうございました。感謝申し上げます。

  8. アバター画像 名前:わいひら 投稿日:2019/02/07(木) 12:19:09 ID:2047e855b

    僕も調べたとき、明確な正解がわからなかったので「これだけ記載しておけば大丈夫かな」みたいな感じて書いています^^;

  9. 名前:ash29er 投稿日:2019/07/05(金) 22:53:34 ID:23b219921

    こんにちは!
    ブログのサイトマップ作成にあたって参考にさせていただきました。
    おかげで設置もでき助かりました。ありがとうございます!
    よければ作成の記録も兼ねて参考としてこちらの記事をリンクさせていただくことはできますでしょうか?

  10. アバター画像 名前:わいひら 投稿日:2019/07/05(金) 23:08:10 ID:148f48463

    こんにちは。
    ありがとうございます。
    記事がお役に立てたようでよかったです。
    リンクは全然貼っていただいて構いません。
    というよりむしろ大歓迎です^^