サイトマップとは?
初めに【サイトマップ】がどういったものなのか解説をしておきます。
以下の解説が【サイトマップ】を理解する上で非常に分かり易いのでご紹介します。
サイトマップとは、一言で表すと、サイト内のページリンクをまとめたページのことで、検索エンジンと検索ユーザー双方に、そのサイトにどうのようなページがあるのかを伝えるためのものだ。このサイトマップには非常に重要な役割があり、サイトのユーザビリティの改善や、内部SEOの向上にも密接に関わっている。サイトマップのSEO効果と理想的な作成方法より引用
設置する理由としては、以下の2つが挙げられています。
- ユーザーが必要としているコンテンツを見つけ易くなる。ユーザビリティが向上する。
- 検索エンジンのクローラーがサイト内のページを見落としなく巡回し易くなる。内部SEOの向上に繋がる。
書籍で例えるなら、目次の役割を果たすのがサイトマップです。
目次のない書籍なんてありませんよね!
同じようにサイトマップのないWEBサイトもおかしな話です。
サイトマップの作成は非常に簡単です。
このコンテンツでサイトマップの作成方法を解説していますので、サクッと設置してみましょう。
すぐにサイトマップを作成できますよ。
WordPressにプラグインなしで自動更新されるサイトマップを作成する手順
WordPressサイトにサイトマップを作成しようとすると、多くの方がプラグインを採用します。
プラグインはWordpressに様々な機能を簡単に実装できて確かに便利なのですが、個人的には必要最低限しか使いたくないと考えています。この辺りのことは、以下のコンテンツで詳しく解説しています。
[ryus_blogcard url=”https://takayakondo.com/wordpress-no-plugin/”]
サイトマップを作成する時、よく選ばれるプラグインと言えば【PS Auto Sitemap】です。
私も初めてWordpressでサイトを作った時は【PS Auto Sitemap】でサイトマップを作成していました。
ですが、サイトマップを作成するなら【PS Auto Sitemap】を使わなくても、テーマをカスタマイズする事で自動的に更新されるサイトマップページを作成することができます。
自動更新ですから、一度カスタマイズしたら後はほったらかしで大丈夫です。
もちろん、サイトマップページに特定のページを表示させないなどのカスタマイズも可能です。
これから、可能な限りコピペだけでサイトマップページを作成できる様に解説をしていきます。
10分程度の作業で自動更新されるサイトマップを作成できますので、ぜひ挑戦してみてください。
WordPressにプラグインなしでサイトマップを実装する手順をご紹介します。
手順1:サイトマップを表示するページを作る。
サイトマップを表示させるための固定ページを作成しましょう。
固定ページの新規作成方法は、以下のコンテンツを参照してください。
[ryus_blogcard url=”https://takayakondo.com/entry-page/”]
タイトルは【サイトマップ】でOKです。
固定ページが作成できましたら、その固定ページのIDをメモしておきましょう。
このIDは後ほどの作業で必要になります。
固定ページのIDを調べる方法は、以下のコンテンツを参照してください。
[ryus_blogcard url=”https://takayakondo.com/individual-id/”]
固定ページを作成し、IDをメモしたら次の項目に進みましょう。
手順2:サイトマップを表示させるテンプレートファイルを作る。
まず、サイトマップを自動生成するテンプレートファイルを作成します。
サイトマップを自動生成するためにはPHPを使いますが、固定ページではPHPが使えません。
そこで、テンプレートファイルを作成し、ショートコードで固定ページに読み込ませます。
プラグインを使って、固定ページでもPHPが動作するようにする方法もありますが、今回はテンプレートファイルを作成して、ショートコードで固定ページに読み込ませる方法をご紹介します。
<ul id="sitemap"><!– HOME –>
<li><i class="fas fa-home"></i> <a href="<?php echo home_url(); ?>"></a></li>
<!– 固定ページ –>
<?php
$page_list = get_posts( 'numberposts=-1&order=ASC&post_type=page&exclude=0' );
foreach ( $page_list as $page_item ) {
echo '<li><i class="far fa-file-alt"></i> <a href="'. get_page_link($page_item->ID).'">'.get_the_title($page_item->ID).'</a></li>';
}
?>
<!– 投稿(カテゴリー単位) –>
<?php
$categories = get_categories('parent=0&exclude=');
foreach($categories as $category) :
?>
<li><i class="far fa-folder-open"></i> <a href="<?php echo get_category_link( $category->term_id ); ?>"><?php echo $category->cat_name; ?>
<span class="total-number">(全<span class="total-number2"><?php echo $category->count; ?></span>記事を見る)</span></a>
<ul>
<?php
$categorylist = array(
'cat' => $category->cat_ID,
'posts_per_page' => 2,
'post__not_in' => array(),
);
?>
<?php
query_posts($categorylist);
if (have_posts()) : while (have_posts()) : the_post();
?>
<li><i class="far fa-file-alt"></i> <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; wp_reset_query(); ?>
</ul>
</li>
<?php endforeach; ?>
</ul>
上記のコードがサイトマップを自動生成するコードです。
このコードをメモ帳などにコピーして保存してください。
ファイル名は「sitemap」拡張子は「.php」としてください。
ファイル名は自由に決めて頂いても構いません。
この先の解説は「sitemap.php」としたものとして話を進めています。
ファイルを保存したら、テーマフォルダの【style.css】と同じ階層にアップロードします。
アップフォードはFTPを介すなどして行ってください。
アップロードできたら、ファイルのコードを一部書き直さなければなりません。

管理画面「外観」⇒「テーマの修正」⇒「sitemap.php」と進んでください。
「sitemap.php」は、「テーマの修正」の右側にある一覧の中にあります。
「sitemap.php」が開けたら、以下の【○○○】部分に調べた固定ページのIDを記述してください。
<!-- 固定ページ -->
<?php wp_list_pages('title_li=&exclude='); ?>
例えば、投稿IDが【3】の場合は、以下の様な記述になります。
<!-- 固定ページ -->
<?php wp_list_pages('title_li=&exclude=3'); ?>
この部分にサイトマップの固定ページIDを記述すると、サイトマップページにサイトマップページへのリンクが表示されなくなります。
サイトマップページにサイトマップページへのリンクが掲載されても意味がありません。
訪問者を迷わせるだけですので、サイトマップページへのリンクは表示されないようにします。
ファイルが修正できたら次の項目に進みましょう。
手順3:サイトマップを表示させるショートコードを作る。
続いて、先ほどアップロードしたテンプレートファイルを、最初に作成した固定ページに読み込むショートコードを作りましょう。
ショートコードってなに?と言う方は、以下のコンテンツを参照してください。
[ryus_blogcard url=”https://takayakondo.com/wordpress-shortcode/”]
ショートコードの知識がある方は、上記のコンテンツは飛ばしてください。
読むのが面倒な方も飛ばしてOKです。
知識がなくてもコピペでショートコードは作成可能です。
functions.phpに以下のコードをコピペします。
function site_map() {
ob_start();
get_template_part('site_map');
return ob_get_clean();
}
add_shortcode('site-map', 'site_map');
上記のコードをコピペしたら、先ほど作成したサイトマップの固定ページ(本文部分)に作成したショートコードを記述します。
【site-map】
※ 実際に記述する時、【】を[]に変更してください。
上記のショートコードを記述することで、サイトマップが表示されるようになります。
ショートコードを記述する時は、テキストエディタに切り替えてから記述してください。
ビジュアルエディタで記述してもショートコードは動作しません。
これで、自動更新されるサイトマップの設置作業は完了です。
最後にサイトマップが正常に表示されているか確認しましょう。
作成したサイトマップページにアクセスして、サイトマップが表示されていればOKです。
手順4:サイトマップを装飾する
今回ご紹介した方法で作成したサイトマップのHTMLは以下の様になります。
<ul id="sitemap">
<!-- HOME -->
<li><a href="">HOME</a></li>
<!-- 固定ページ -->
<li class="page_item">固定ページA</li>
<li class="page_item">固定ページB</li>
<!-- 投稿(カテゴリー単位) -->
<li><a href="">カテゴリーA<span class="total-number">(全<span class="total-number2">【カテゴリーAの記事数】</span>記事を見る)</span></a>
<ul>
<li><a href="">カテゴリーAの記事A</a></li>
<li><a href="">カテゴリーAの記事B</a></li>
<li><a href="">カテゴリーAの記事C</a></li>
</ul>
</li>
<li><a href="">カテゴリーB<span class="total-number">(全<span class="total-number2">【カテゴリーBの記事数】</span>記事を見る)</span></a>
<ul>
<li><a href="">カテゴリーBの記事A</a></li>
<li><a href="">カテゴリーBの記事B</a></li>
<li><a href="">カテゴリーBの記事C</a></li>
</ul>
</li>
</ul>
固定ページが2件、カテゴリーが2件、記事の件数が6件、そんなサイトの場合です。
サイトマップの装飾は、CSSなどから自由に行ってください。
サイトマップの表示内容をカスタマイズする。
知っていると便利なサイトマップのカスタマイズ方法を3つご紹介します。
投稿の表示件数を変更する
今回ご紹介したコードの場合、カテゴリーごとに表示される投稿の件数は2件となっています。
この件数を変更する場合は、以下の部分を編集してください。
$categorylist = array(
‘cat’ => $category->cat_ID,
‘posts_per_page’ => 2,
‘post__not_in’ => array(),
);
?>
上記の赤文字部分に表示させたい投稿の件数を記述します。
例:5件なら【5】と記述する。
今回ご紹介したコードでは、カテゴリー毎に表示する投稿の件数を変更することはできません。
全てのカテゴリーで表示できる件数を統一となります。
特定の投稿をサイトマップから除外する。
サイトマップに表示させたくない投稿がある場合、テンプレートファイル「sitemap.php」を編集することで特定の投稿を除外することができます。
除外したい投稿が1つの場合と複数の場合で記述方法が異なります。
除外したい投稿が1つだけの場合
「sitemap.php」から以下の部分を見つけてください。
<?php
$categorylist = array(
'cat' => $category->cat_ID,
'posts_per_page' => 2,
'post__not_in' => array(),
);
?>
赤文字で強調されているコードを、以下の様に書き換えます。
array( 投稿ID )
【投稿ID】の部分に、表示させたくない投稿の投稿IDを記述します。
例えば、投稿IDが3の場合は以下のように記述します。
array( 3 )
投稿IDの確認方法は、サイトマップを表示させる固定ページを作成した時の方法と同じです。
投稿IDを書き込んだら、サイトマップを表示してみましょう。
記述したIDの投稿がサイトマップから消えているはずです。
除外したい投稿が複数ある場合
「sitemap.php」から以下の部分を見つけてください。
<?php
$categorylist = array(
'cat' => $category->cat_ID,
'posts_per_page' => 2,
'post__not_in' => array(),
);
?>
赤文字で強調されているコードを、以下の様に書き換えます。
array( 投稿ID, 投稿ID )
【投稿ID】の部分に、表示させたくない投稿の投稿IDを記述します。
例えば、投稿IDが3と6の場合は以下のように記述します。
array( 3, 6 )
【,】で投稿IDを区切れば、いくつでも投稿IDを指定することができます。
投稿IDを書き込んだら、サイトマップを表示してみましょう。
記述したIDの全ての投稿がサイトマップから消えているはずです。
特定のカテゴリーに属する全ての記事をサイトマップから除外する。
特定の投稿をサイトマップから除外するのではなく、特定のカテゴリー自体(分類された投稿を丸ごと)を除外する方法です。
こちらも、除外したいカテゴリーが1つの場合と複数の場合で記述方法が異なります。
除外したいカテゴリーが1つだけの場合
「sitemap.php」から以下の部分を見つけてください。
<!– 投稿(カテゴリー単位) –>
<?php
$categories = get_categories(‘parent=0&exclude=’);
foreach($categories as $category) :
?>
赤文字で強調されているコードを、以下の様に書き換えます。
<!– 投稿(カテゴリー単位) –>
<?php
$categories = get_categories(‘parent=0&exclude=カテゴリーID’);
foreach($categories as $category) :
?>
【カテゴリーID】の部分に、表示させたくないカテゴリーのIDを記述します。
カテゴリーIDの調べ方は、以下のコンテンツを参照してください。
[ryus_blogcard url=”https://takayakondo.com/individual-id/”]
仮に除外したいカテゴリーIDが【3】の場合は、以下の様な記述になります。
<!– 投稿(カテゴリー単位) –>
<?php
$categories = get_categories(‘parent=0&exclude=3’);
foreach($categories as $category) :
?>
除外したいカテゴリーが複数ある場合
「sitemap.php」から以下の部分を見つけてください。
<!– 投稿(カテゴリー単位) –>
<?php
$categories = get_categories(‘parent=0&exclude=○○○’);
foreach($categories as $category) :
?>
赤文字で強調されているコードを、以下の様に書き換えます。
<!– 投稿(カテゴリー単位) –>
<?php
$categories = get_categories(‘parent=0&exclude=カテゴリーID, カテゴリーID’);
foreach($categories as $category) :
?>
【カテゴリーID】の部分に、表示させたくないカテゴリーのIDを記述します。
仮に、除外したいカテゴリーIDが【3】と【5】の場合は、以下の様な記述になります。
<!– 投稿(カテゴリー単位) –>
<?php
$categories = get_categories(‘parent=0&exclude=3, 5’);
foreach($categories as $category) :
?>
【,】でカテゴリーIDを区切れば、いくつでもカテゴリーIDを指定することができます。
特定の固定ページをサイトマップから除外する。
特定の固定ページをサイトマップから除外したい場合です。
基本は既に解説したサイトマップページをサイトマップから除外するのと同じと考えてください。
除外したい固定ページが1つだけの場合
「sitemap.php」から以下の部分を見つけてください。
<!-- 固定ページ -->
<?php wp_list_pages('title_li=&exclude='); ?>
赤文字で強調されているコードを、以下の様に書き換えます。
<!-- 固定ページ -->
<?php wp_list_pages('title_li=&exclude=投稿ID'); ?>
除外したい固定ページの【投稿ID】が【3】の場合は、下記の様に書き換えます。
<!-- 固定ページ -->
<?php wp_list_pages('title_li=&exclude=3'); ?>
このコンテンツを頭から読んで作業をしている場合、この部分には、既にサイトマップページの投稿IDが記述されているかと思います。そこに別の投稿IDを加える場合は、次の項目を参照してください。
除外したい固定ページが複数ある場合
「sitemap.php」から以下の部分を見つけてください。
<!-- 固定ページ -->
<?php wp_list_pages('title_li=&exclude='); ?>
赤文字で強調されているコードを、以下の様に書き換えます。
<!-- 固定ページ -->
<?php wp_list_pages('title_li=&exclude=投稿ID, 投稿ID'); ?>
除外したい固定ページの【投稿ID】が【3】と【6】の場合は、下記の様に書き換えます。
<!-- 固定ページ -->
<?php wp_list_pages('title_li=&exclude=3, 6');?>
【,】で投稿IDを区切れば、いくつでも投稿IDを指定することができます。
投稿IDを書き込んだら、サイトマップを表示してみましょう。
記述したIDの全ての固定ページがサイトマップから消えているはずです。
まとめ
WordPressサイトに自動更新されるサイトマップを作る方法をご紹介しました。
プラグインを使わずにサイトマップを作成する方法です。
プラグインを増やしたくない、ほったらかしでサイトマップを更新したい方は使ってみてください。
駆け足で解説しましたので、不明な点があるかもしれません。
そんな場合は、お問い合わせからご連絡をください。
個別に回答をさせていただきます。
コメントを残す