BLOG

WordPressテンプレートでtitileやdescriptionの重複を回避するためのひとつのアイデア

WEBサイト管理者であれば、必ずGoolgeウェブマスターツールを使用しているものと思われますが、
その機能項目の中に「HTMLの改善」と題されたページがあります。

静的HTMLで1ページ1ページを作成しているサイトなんかの場合にはこの項目、
ワリと、

サイトでコンテンツの問題は検出されませんでした

と表示されているのではないかと思うのですが、

一方、WordPressのようなテンプレートを使用した構造のサイトなんかの場合、
重複するメタデータ(description)
とか、
タイトルタグの重複
なんて表示されていたりするのではないでしょうか?

SEOなんかを気にされる方は、結構悩ましい指摘に思うかもしれませんが、
SEO的メリットという点においての直接的な関係性はないであろう、と巷では言われております。

あくまで、ユーザビリティの改善のためのGoogleからの指摘、のようです。
(しかしながら、スパム的な使用においては、当然ペナルティの可能性はあるでしょう)

文書というものは、コピーコンテンツでもないかぎり、当然1ページ1ページ内容は異なるわけで、
すると要約文(description)もそれに伴って、1ページ1ページ異なって然るべき、という論理になります。

当然コピーコンテンツは、Googleからのキツーいペナルティを食らう可能性が非常に高いです。

では、テンプレートを使用したサイトで、各ページのtitledescriptionnをそれぞれユニークのものにするには、いったいどうすればいいのか?

WordPressであれば、SEO系の各種プラグインなんかもありますが、

「プラグインは極力入れたくない」

「SEO系ツールは生理的にムリw」

なんて方に(ボクがそうです)向けて、
本記事では、WordPressテンプレートにおける、
titledescriptionの重複を回避するためのひとつのアイデアを記しておきたいなと思います。

WordPressテンプレートのTitle記述パターン・アイデア

<title>
<?php wp_title('|', true, 'right'); ?>
<?php bloginfo('name'); ?> | <?php bloginfo( 'description' ); ?>
<?php if(get_query_var('paged')) echo ' ~ Page'.get_query_var('paged'); ?>
</title>

トップページでは“name” “description”の順に表示し、
下層ページでは、それらの先頭に“wp_title”を先行表示させます
そして「WP-PageNavi」プラグインを使用するなどしてページ分割されたパターンの場合のタイトル名カブりを回避するために、

<?php if(get_query_var('paged')) echo ' ~ Page'.get_query_var('paged'); ?>

で最後尾にページ番号を記載しています。

WordPressテンプレートにおけるDescriptionの記述パターン・アイデア

<?php //meta descriptionの設定
$custom_fields = get_post_custom();

if (is_month()) { ?>
<meta name="description" content="サイト名「<?php echo trim(wp_title('', false)); ?>」の記事アーカイブ。
<?php if(get_query_var('paged')) echo ' ~ Page'.get_query_var('paged'); ?>">

<?php } elseif (is_category()) { ?>
<meta name="description" content="サイト名「<?php echo trim(wp_title('', false)); ?>」カテゴリに分類されたページ。
<?php if(get_query_var('paged')) echo ' ~ Page'.get_query_var('paged'); ?>">

<?php } elseif (is_tag()) { ?>
<meta name="description" content="サイト名「<?php echo trim(wp_title('', false)); ?>」タグに分類されたページ。
<?php if(get_query_var('paged')) echo ' ~ Page'.get_query_var('paged'); ?>">

<?php } elseif (isset($custom_fields["description"])) { ?>
<meta name="description" content="<?php echo get_post_meta($post->ID,'description',true); ?>
<?php if(get_query_var('paged')) echo ' ~ Page'.get_query_var('paged'); ?>">

<?php } else { ?>
<meta name="description" content="デフォルト表記用Description
<?php if(get_query_var('paged')) echo ' ~ Page'.get_query_var('paged'); ?>">
<?php } ?>

テンプレート毎に、if文で表記を処理分けしております。
また、カスタムフィールドを一部用いています。

説明しますと、
is_monthで月別アーカイブかどうかを、
is_categoryでカテゴリーページを、
is_tagでタグ分類ページを、
それぞれ判別し、
それに該当しないもので、投稿記事や固定ページなどのカスタムフィールドに“description”指定のあるものを記述、
さらにそれにも該当しないものを、デフォルトとして最下部にセッティングしています。

なおその際、全てのdescriptionの最後尾には、先述の「ページ番号記載」を追加しています。

以上でございます。

もっとスンばらしい手法が他にあるとは思うのですが、
最低限descriptionとしての役割と重複解消には、このくらいでいいのではないかな、と思っております。

決して万能な施策ではないし、サイトコンテンツの構築法次第では、上記のままでは当然フィットしない例も多々あるでしょうから、
その点はあしからずでw

望むべくではあるのですが、
metaタグのdescriptionとkeywordsに関しては、いずれHTMLの仕様から外しても良いのではないかと個人的には思っております。

みなさんはいかがでしょうか?

[2014年6月追記]
ちなみに、最新のWordPressでは、canonicalが上手いこと働いてくれていて、
Googleとの阿吽の呼吸でシステム上の致し方ない重複コンテンツを問題なく処理してくれているので、
姑息なSEOだとかチョンボをやらかしていない限りは、
あんまり神経質になる必要はなさそうですね。

タグ:

Comments