先日、無料WordpressテーマCocoonの方に「サイトマップ機能」を実装しました。
そうしたら、思いのほか反響があり、こういった機能の需要が多かったのが分かりました。
おそらく、以下のような方が結構おられたのだと思われます。
サイトマップを1ページだけ生成するのにプラグインを入れるのも何だかなぁ…。
テーマの機能として手軽にパパっとサイトマップを作りたい。
先日実装したコードは、ショートコード機能なので、どのようなテーマにでも簡単に移植可能です。
なので、どんなテーマでも利用できるように「サイトマップショートコード機能」をコピペで簡単に実装できる方法を紹介したいと思います。
目次
主な手順
サイトマップショートコードをテーマに利用するにあたって、やることはたったこれだけです。
- テーマのfunctions.phpにコードを貼り付ける
- 固定ページにショートコードを入力する
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を利用しているため、テーマによっては「見出しのアウトライン」に合わせて変更する必要があるかもしれません(※見出し順が気になる場合)。
参考
上記コードは、以下のサイトマップページ作成方法を参考に、ショートコード用に変更しました。
固定ページにショートコードを入力する
あとはサイトマップを表示させる固定ページに、以下のショートコードを貼るだけです。
[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的な意味での「サイトマップページ」の作成であれば、これくらい簡易的なものでも十分(もしくは不要)かと個人的には思っています。
こんにちは。
プラグインでのサイトマップがうまく表示できずに困っていたので、非常に助かりました。
しかも、すごく簡単だったので初心者の私でも簡単にできて、本当に嬉しかったです。
本当に感謝!
Twitterにてシェアさせていただきます!