SEOブロガーがこだわり抜いた、
WordPressプラグイン&テクニック10選

私はこのサイトを立ち上げる時に生まれて初めてWordPressに触れました。
今回は「SEO」対する自分のこだわりを詰め込もうと悪戦苦闘しながら身につけたWordPressのテクニックと最終的に使用したプラグインをまとめてご紹介します。
なお、使用中のWordPressのバージョンは3.1.4です。
目次
- サーバーはヘテムル
- 固定ページを用意する。TOPページも固定して、ブログは「/blog/」以下で展開
- TOPページやブログTOPに独自テンプレートを使用
- 余分なディレクトリを生成させ無い。
- All in One SEO Packは使わない。主要タグはカスタムフィールドで完全ユニーク化
- 重複ページが嫌なので「アーカイブ」や「タグ」は使わない
- サイト内リンクにこだわる
- パンくずリストは構造化マークアップ
- 各カテゴリ内のブログ記事の数を(*)で表示。
でもアンカーテキストには含ませない - その他、最終的に使用したプラグイン達
1.サーバーはヘテムル
レンタルサーバーもいろいろ調べましたが、最終的にheteml(ヘテムル)を採用しました。
- 独自SSLが取得可能なサーバーの中では比較的安価
- 容量も42.195GBと申し分ない
- WordPress 3 の簡単インストール機能が付いていて初心者には安心だった
参考:heteml(ヘテムル)
2.固定ページを用意する。TOPページも固定して、ブログは「/blog/」以下で展開
SEOの「まとめ」サイトというコンセプトですので、ブログを使った最新ニュースの配信とは別にSEOの「基本編」としてページを用意する必要がありました。いわゆるコーポレートサイトのスタイルです。
「基本編」はある程度SEOに精通した方であれば退屈な内容ですのでRSS上で垂れ流しにするわけにはいきません。
そこでこれらのページは固定ページとして、ブログは
「http://www.seo-matome.jp/blog/」以下で展開することに。管理画面では以下のように設定して、美しいディレクトリ構造を作ることを目指しました。
具体的には管理画面上から「表示設定」と「パーマリンク設定」を以下のように設定します。


3.TOPページとブログTOPに独自テンプレートを使用する
このサイトの場合はさらにサイトTOPとブログTOPにそれぞれ独自テンプレートを使用しています。
参考:WordPressのトップページを変更(textdrop)
※ 上記の参考サイトでは「投稿ページ」欄にブログトップを指定するように記載されていますが、そうすると後述のカスタムフィールドが適用されなくなるので「投稿ページ」欄にをブランクにしました。ここはもっとうまいやり方がありそうです。
4.余分なディレクトリを生成させ無い
WordPressを使用したサイトの場合「wp」と「wordpress」などのディレクトリ配下にコンテンツを出力させているケースを良く見かけます。
これは「一般設定」の「サイトのアドレス」欄に「WordPressのアドレス」と同一のものを指定してしまうことが原因です。
サイト内の全ページをWordPress上で管理するには「サイトのアドレス」には第一階層と同じものを設定します。

さらに、私はブログのページに「category」なるディレクトリが自動で出力されて無駄にURLが長くなるのが非常に気になりました。
そこでTop Level Categoriesをインストールして「category」ディレクトリが出力されなくなる設定に。特に設定も必要無く有効化するだけで機能してくれる素晴らしいプラグインです。
また、日本語URLはリンクが貼られにくくなるので使用しません。
5.All in One SEO Packは使わない。
主要タグはカスタムフィールドで完全ユニーク化
WordPressのSEOカスタマイズプラグインとしてはAll in One SEO Packが有名ですが、各ページの<meta>タグや<title>を完全に個別設定したい、という私のニーズを満たしてくれるものではありませんでした。
そこで<title>、<meta nema="description">、<h1>タグを設定することにしました。
(<meta nema="keywords">はそもそも設定しない主義です)
「header.php」内、<title>部分
<?php if (is_category()): ?>
<?php single_cat_title(); ?>|ブログ|SEOまとめ
<?php else : ?><?php echo get_post_meta($post->ID,title,TRUE); ?>
<?php endif; ?></title>
「header.php」内、<meta nema="description">部分
本文中<h1>部分(「category.php」以外)
本文中<h1>部分(「category.php」)
ブログの各カテゴリーTOPページではカスタムフィールドを適用できないため、if文での条件分岐を使ってカテゴリーTOP用のタイトル、メタディスクリプションを用意した場合のコードです。
あとは個別ページやブログを投稿する際に各変数(ここではそれぞれ「title」「description」「h1」としています)を用いたカスタムフィールドを設定すればOKです。
参考:お手軽WordPress Tips:カスタムフィールドを使ってh1を記事に応じて変更出来るようにする(かちびと.net)

こうすることで記事の文字数に合わせたタイトル文や、共通部分の無いメタディスクリプション、パンくずリストの内容と異なる<h1>などが設定できるようになり、キーワードチューニングの自由度が飛躍的に向上します。
6.重複ページが嫌なので「アーカイブ」や「タグ」は使わない
「アーカイブ」やそれを用いたカレンダー機能は便利だと思いましたが、SEO屋としては元の記事ページと完全に内容が重複した別URLのページが生成されるのが気に入りません。
とは言えSEOがテーマのブログでは情報の鮮度は読者としても気になるところだと思いましたので、サイドメニューの新着記事を多めにとって(5記事)、投稿日を含ませるようにしました。
「sidebar.php」の新着記事部分の記述
<dt>ブログ新着記事</dt>
<?php query_posts(‘posts_per_page=5′); ?>
<?php while (have_posts()) : the_post(); ?>
<dd class="new-article"><?php the_time(‘Y/m/d’) ?><br><a href="<?php the_permalink() ?>">
<?php the_title(); ?></a></dd>
<?php endwhile;?>
</dl>
また、これは私が無知なだけかも知れませんが、WordPressの「タグ」機能には魅力を感じませんでした。ブログの記事をジャンル分けするなら「カテゴリー」で十分。余分な重複ページを作ることも無いので、「タグ」は常に設定していません。
7.サイト内リンクにこだわる
SEOにおける内部施策で最近特に私が重視しているのはサイト内部リンクです。理想のリンク構造を実現するために以下のようなポイントに注意しました。
- SEO上重要となる各固定ページTOPとブログカテゴリーTOPへのリンクを
「sidebar.php」に記述することでサイト内全ページにリンク - 記事の文章内で徹底したクロスリンク
- 固定ページについては第3階層のページ同士をリンク
2点目のクロスリンクとは、各記事の文章中に他の固定ページと関連する用語が出てきたら積極的にリンクさせることです。
SEOとしての効果はもちろんなのですが、専門用語が出てきたときにすぐ別ページで調べられる構成になるのでユーザービリティが大きく向上します。「基本編」として100ページ近い固定ページを用意した意味がここで出てきます。
なお、私は手作業で設定していますが、自動でリンクを張ってくれるAutomatic SEO Linksという便利なプラグインもあるようです。
また3点目についてですが、例えばこの第3階層のページにアクセスしていただくとページ下部に同ディレクトリページへのリンクが表示されているを確認していただけると思います。
これが検索エンジンに対してページ同士の関連の強さを伝える役割を果たします。
この部分のコードは以下のようになります。
if (is_page() && $post->post_parent ) {
$parent=$post->post_parent;
} else {
$parent=$post->ID;
}
$ul_top_title = get_the_title($parent);
$ul_top_url = get_permalink($parent);
if(wp_list_pages("title_li=&child_of=$parent&echo=0" )):
?>
<section>
<h3>「<?php wp_title(”) ?>」と同じカテゴリー内のページ</h3>
<ul id="sub-page">
<li><a href="<?php echo $ul_top_url; ?>"><?php echo $ul_top_title; ?></a></li>
<?php
$children = wp_list_pages(‘title_li=&sort_column=menu_order&child_of=’.$parent.’&echo=0′);
echo $children;
?>
</ul>
<?php endif; ?>
参考:WordPressのサブページの一覧を自動的に表示する方法(がんちゃんのブログ)
8.パンくずリストは構造化マークアップ
パンくずリストを構造化マークアップすることで、インデックス早期から検索結果画面にパンくずリストが表示されるようになりました。

以下は親ページと子ページを区別するようにカスタマイズしながら、RDFaを使って構造化マークアップしたこのサイトの「page.php」パンくずリスト部分のコードです。
<li typeof="v:Breadcrumb"><a rel="v:url" property="v:title" href="<?php bloginfo(‘url’); ?>/">TOP</a></li>
<?php foreach ( array_reverse(get_post_ancestors($post->ID)) as $parid ) { ?>
<li typeof="v:Breadcrumb"> > <a rel="v:url" property="v:title" href="<?php echo get_page_link( $parid );?>"><?php echo get_page($parid)->post_title ?></a></li>
<?php } ?>
<li><?php wp_title(‘>’) ?></li>
</ul>
WordPressのいいところはテンプレートひとついじればこうした修正ができることろですね。
9.各カテゴリ内のブログ記事の数を(*)で表示。
でもアンカーテキストには含ませない
当初からこのサイトを訪れる方のほとんどはブログ目当てになるのではないかな、という想定でいました。
そのため、出来る限り「ブログっぽく」するために各カテゴリー内の記事数を(*)で表示するようにします。
以下は該当部分のコードです。
<dt>ブログカテゴリー</dt>
<?php
$cat_all = get_terms( "category", "fields=all&get=all" );
foreach($cat_all as $value):
?>
<dd><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a>(<?php echo $value->count;?>)</dd>
<?php endforeach; ?>
</dl>
10.その他、最終的に使用したプラグイン達
各地でオススメされてされているプラグインはひと通り試しましたが、
最終的に残したものはそんなに多くありません。
- AddQuicktag
- HTMLコードの呼び出しが早くなり、記事投稿がはかどる。
- Akismet
- コメントやトラックバックのスパムからブログを守ってくれます。
- Broken Link Checker
- リンクエラーがないかブログをチェックし、見つかった場合は、ダッシュボード等で通知します。
- Category Order
- サイドバー上のブログカテゴリーの並び順を変更できる。
- Contact Form 7
- お問い合わせフォーム用の定番プラグイン。
- Disable WPAUTOP
- 勝手に<p>タグが挿入されるのを防ぐ。
- Exec-PHP
- 記事中でPHPを使用するために。
- Google XML Sitemaps
- sitemap.xmlの自動更新は非常に便利。
- PS Auto Sitemap
- WEB版サイトマップページの自動生成は非常に便利。
- Ktai Style
- インストールするだけでガラケーに対応。携帯ユーザーはそこまで意識していませんが、そのままにしておくより読みやすかったので採用。
WPtouchと併用する場合は「iPhone, Android 用」をオフにすること。 - RSS Footer
- RSSのフッターにコピーライトを含ませて記事の盗難防止。
- Search Everything
- 検索機能をつけたい時の定番アイテムです。
- WP-DBManager
- 万が一の時に備えてデータベースをバックアップしてくれる。
- WP-OGP
- Facebookページも作ったので導入。
- WP Multibyte Patch
- マルチバイト文字に関する不具合を修正してくれている・・・らしい。デフォルト。
- WPtouch
- 簡単にスマートフォン、iPhoneに対応してくれる。
おまけ.有名だが残念ながら不採用になったプラグイン達
- All in One SEO Pack
- カスタムフィールドの方が良かった。
- Automatic SEO Links
- 興味はあったが結果的に手作業で記事内リンクを設定。
- brBrbr
- 記事内の目印のために改行を入れることもあったので不採用。
- Favicon Manager
- ファビコンのコードは自分で「header.php」に入れました。
- Redirection
- 自動で301リダイレクトを設定してくれるらしいがGoogleChromeで転送がループしたため削除。
- SEO Slugs
- 記事のURLを英語で最適化してくれるらしいが、これも自分で決めたいので不要。
- WP Super Cache及びQuick Cache
- うーん、もともと軽い構成のせいか、効果(表示速度の向上)を実感できません。
それより自動でキャッシュされることによってデバックがしづらくなる方が嫌でした。
以上、ご参考にしていただけましたでしょうか。何しろWordPressもPHPも超初心者の人間が独学したものですので、決して完璧とは言えないと思います。
「もっといいやり方があるよ!」「こんなナイスなプラグインもあるよ!」という方は、
是非TwitterやFacebookからご意見ください。
今回の記事がWEBマスターやクリエイターの皆さんのお役に立てば幸いです。


COMMENTS
皆様のコメントをお待ちしております。
ご意見・ご感想はTwitter、Facebook、Googleプラスからもどうぞ。
SEOまとめ(投稿日時:2011年7月6日 3:14 PM)
【管理者追伸】「カテゴリURLからcategoryを消すのはTop Level Categoriesより WP No Category Base の方が安心」という追加情報をいただきました。ありがとうございます。 http://www.seotemplate.biz/blog/wordpress-plug/3796/
SEOまとめ(投稿日時:2011年7月6日 3:18 PM)
【管理者追伸】アーカイブとの重複URLを回避するにはmetaタグの「noindex,nofollow」を使う手もある。@n_85(http://twitter.com/n_85)さんからの情報です。
n_85(投稿日時:2011年9月12日 8:22 PM)
重複解除のタグの件ご紹介ありがとうございます!!
ちょっと色々と検索していて偶然拝見しました!