SEO対策のために、サイトのメタデータ、主に「keywords」と「description」を設定してhtmlに埋め込むことがよくあると思います。
その設定の際、WordPressにはメタデータを管理するためのプラグイン「All in One SEO Pack」や「WordPress SEO by Yoast」など、便利なプラグインが多数用意されています。
これらのプラグインを使うメリットはズバリ、簡単に導入できること。しかしデメリットもあります。
1つは、htmlソースが乱雑になること。もう1つは、個々の記事に手動でkeywordsとdescriptionを設定していくのがかなり面倒な作業であるということです。
オンズでは、単調な作業や面倒なルーティンはなるべく自動化してしまおうというコンセプトを掲げ、業務の効率化を図っているので、メタデータの設定に関しても新たな解決策を創り出そうと考えました。
そこで導き出された答えがこちら。
記事の内容から自動的に[keywords]と[description]の情報を抽出して表示させる方法です。
メタデータ自動入力の条件、基本方針は以下のとおり。
- プラグインは使わない。
- 記事が属するカテゴリーを「keywords」に含める。
- タグが紐づけられていた場合、それも「keywords」に含める。
- 記事(single.php)以外の「keywords」には、デフォルトのキーワードを入れておく。
- 「description」には記事の始めから60文字分を入れる。
- 記事以外の「description」には、一般設定のキャッチフレーズ(このサイトの簡単な説明)を入れる。
以上の条件を満たすようにプログラムコードを書いてみます。
<meta name="description" content="<?php if(is_home()){ ?>トップページに表示したいdescriptionを書く<?php } elseif (is_single()){ echo $content_summary; } else { ?><?php bloginfo('description'); ?><?php } ?>"> $content_summary= strip_tags($post->post_content); $content_summary = str_replace("\n", "", $content_summary); $content_summary = str_replace("\r", "", $content_summary); $content_summary = mb_substr($content_summary, 0, 60). "..."; <meta name="keywords" content="<?php if(is_home()) { ?>トップページに設定したいキーワード,キーワード①,キーワード②<?php } elseif (is_single()){ ?><?php $posttags = get_the_tags();if ($posttags) {foreach($posttags as $tag) {echo $tag->name . ','; }} ?><?php the_title(); ?><?php } else { ?>デフォルトのキーワード①,デフォルトのキーワード②<?php } ?>">
以上で各記事ごとに「keywords」と「description」が自動で挿入されるようになります。
さらに細かく設定したければ、「is_page()」、「is_category()」、「is_archive()」などの条件分岐タグ使えば思いどおりにカスタマイズすることができるでしょう。
ちなみに。今となってはkeywordsもdescriptionもSEO的にはほとんど意味がありません。
正直に申し上げて「効果は無い」と断言できるくらいです。
その設定のために時間を費やすのは無駄な努力であると指摘しておきます。
それでも「keywords」と「description」を記述しておきたいという方のために。上記コードはコピーしてテンプレート(header.php)内に貼り付けるだけなのでとても簡単。
ぜひご利用ください。