プラグインを使わずにwordpressのメタデータ重複(description)を解決する方法

このサイトはWordpressで作成しているのですが、どうやらディスクリプションに何も指定せずに運営していると、Google ウェブマスターツールにおいて、タイトルタグやディスクリプションの重複エラーが検出されてしまうようです。

ディスクリプションに何も書かずにGoogleロボットの解釈に任せる

という方法も効果があるそうなのですが、エラーは出来れば直したい…。なので前回、

HeadSpace 2 SEOというプラグインを使用してディスクリプションの重複を解決する方法

をご紹介したのですが、プラグインに頼ってばかりじゃサイトの動きが遅くなりそうだし、勉強にもならないし…ということで、オリジナルのPHPコードを書いてみました。

先日、実施したばかりなのでまだ反応は出ていませんが、多分これでタイトルやディスクリプションの重複を解決できるはず!?ただ、

HeadSpace 2 SEOというプラグインを使用してディスクリプションの重複を解決する方法

と比較してしまうと、個々のページ毎にディスクリプションの設定ができないので、個別記事以外の部分はほぼ同じようなディスクリプションになります。

が、ページID等を入れることでこの重複も解決されると思います。
とりあえず検証中なので、このコードであっているかはまだ実証はできていませんが、運営しているサイトの全ページを確認したところ、重複はなくなっていましたのであとはGoogle先生の判断にお任せ…といった感じです。

タイトルの重複をなくす

タイトルの重複をなくすコードです。書く場所は
header.php<head> </head>内になります。

PHP
<!-- title -->
<title>
<?php global $page, $paged, $post_type;
if (is_front_page()) { // フロントページの時
	echo 'TOP | ';
	bloginfo('name');
} else {
	wp_title('|', true, 'right');
	if ($paged >= 2 || $page >= 2){ // ページが2ページ以上の時
		echo ''.sprintf( __('Page %s', 'twentyten'), max($paged, $page)).' | ';
	}
	if($post_type == 'luvrand'){ // 投稿タイプがカスタムタクソノミーの時
		echo $post_type.' | ';
	}
	echo 'NO:';
	the_ID();
	echo ' | ';
	bloginfo('name');
}
?>
</title>
<!-- title -->

ディスクリプションの重複をなくす

ディスクリプションの重複をなくすコードです。書く場所は
header.php<head> </head>内になります。

PHP
<!-- discription -->
<?php if (is_single()) { // 個別記事の場合
	if ($post->post_excerpt){ // 抜粋がある場合ディクリプションにそのまま抜粋を代入
		echo '<meta name="description" content="'.$post->post_excerpt.'">';
	} else {
		// 抜粋がない場合、記事の最初の方をディスクリプションに代入
		$postsummary = strip_tags($post->post_content);
		$postsummary = str_replace("\n", "", $postsummary);
		$postsummary = mb_substr($postsummary, 0, 100). "…"; // 抜粋文字数の制御
		echo '<meta name="description" content="'.$postsummary.'">';
	}
} else if (is_front_page()){ // フロントページの時
	echo '<meta name="description" content="';
	echo 'TOP | NO:';
	the_ID();
	echo ' | ';
	bloginfo('description');
	echo 'などの情報を掲載。';
	bloginfo('name'); echo '">';
} else { // 個別記事以外の場合
	echo '<meta name="description" content="';
	global $page, $paged, $post_type;
	wp_title('|', true, 'right');
	if ($paged >= 2 || $page >= 2){ // ページが2ページ以上の時
		echo sprintf( __('Page%s', 'twentyten'), max($paged, $page)).' | ';
	}
	if($post_type == 'luvrand'){ // 投稿タイプがカスタムタクソノミーの時
		echo $post_type .' | ';
	}
	echo 'NO:';
	the_ID();
	echo ' | ';
	bloginfo('description');
	echo ' | ';
	bloginfo('name');
	echo '">';
} ?>
<!-- discription -->

※このコードでは

  • ページが2ページ以上になった場合
  • フロントページを固定ページで作っている場合
  • カスタムタクソノミーを利用している場合

に対応させています。
もう少しスマートな書き方があると思うので、お好きなようにいじって使いまわして頂ければと思います。

利用している関数の意味

このコードを書くにあたって、codexを参考にさせて頂きました。
利用しているワードプレスの各関数の意味は下記の通りとなります。

利用している関数の意味
is_front_page(); サイトのフロントページが表示されている場合
bloginfo(‘name’); 管理画面で指定したブログのタイトル
bloginfo(‘description’); 管理画面で指定したブログの説明文
wp_title(‘|’, true, ‘right’); ブログ名とタイトルを反転して区切る
the_ID(); 記事のIDを出力
is_single(); 個別投稿のページ(または添付ファイルページ・カスタム投稿タイプの個別ページ)が表示されている場合。固定ページには適用されない。
$post->post_excerpt 投稿の抜粋

今後、このコードでどうなるのかを検証していきます。
結果に関しては反応が出次第、記事にしたいと思います!

追記(2012/04/10):
上記の方法でディスクリプションとタイトルの重複を修正した結果のご報告!

webmaster1

じゃじゃーん!なんとエラー数が1になりました!
ということで何とか重複エラーを修正することが出来ました!
…まだ1残ってますが…。修正する前は64とかもあったので大分改善出来たと思います。
重複エラーが気になっているという方はぜひお試しあれ!

Comments

  • けんた

    またまたご返答いただきありがとうございます。
    TOPを関連アル言葉に変えました^^
    重ね重ね
    こんなありがたい記事を書いていただきありがとうございました。

    2015年1/31

  • けんたさま
    多分ですが、PHPコード内にある、echo ‘TOP | NO:’; のTOPを違う文字にしたり削除して頂ければ消えてくれるかと思います!

    2015年1/28

  • けんた

    とんでもないです。
    悩みを解決いただきまして、
    ありがとうございました。
    なにやっても駄目なので、ワードプレスだったら仕方ないのかな
    と半分あきらめてました。

    ずるずうしくて申し訳ないのですが、

    1ツだけ質問してもよろしいでしょうか、
    Google検索タイトルの頭に「TOP|」とつくのですが、
    これは消す事が可能でしょうか?

    2015年1/27

  • けんたさま
    はじめまして。コメントありがとうございます!
    プラグインだとなぜか重複が増えちゃうんですよね・・・(*_*)私もいろんなプラグインを導入した結果、この方法に辿りつきましたww
    この記事がお役に立てたようで良かったです!

    2015年1/27

  • けんた

    はじめまして。

    これはすばらしいです。
    いままでプラグインを入れたりしてなんとかしようとしていたのですが、
    じわじわ重複がふえていくばかりでしたが、
    この記事にたどりつき、設定したところ、
    ゆっくりですが確実に減っていき

    重複メタデータ 22→0
    重複タイトル  80→12

    まで減少しました。
    おそらく重複タイトル0も時間の問題だと思います。
    ほんと神様仏様です。
    ありがとうございました。

    2015年1/27

  • とおるさま
    >8残っていたのが遂に0になりました。
    おおおおっ!おめでとうございます!

    >ワードプレスで使用しているテンプレートのせいでしょうか?
    └そうだと思われます。WPで配布されているテンプレートですとディスクリプション部分などは改修したり
     プラグインを使用しないと重複が直せなかった記憶があります。

    ほんとうに良かったですー!また何かありましたらご連絡くださいませ!

    2014年10/7

  • お世話になります。

    先ほどウェブマスターツールを確認したら
    重複するメタデータ(descriptions)
    8残っていたのが遂に0になりました。

    これはすごいです。
    感謝いたします。

    記事を書くたびに重複するメタデータ(descriptions)が増えていったのは、
    ワードプレスで使用しているテンプレートのせいでしょうか?

    しかしご指南頂いたタグを入れると、
    2週間弱ですべてなくなりました。

    ありがとうございます。
    今後ともどうぞよろしくお願いいたします。

    2014年10/6

  • とおるさま
    >1週間で58→8までに減りました。
    おおっ!すごいですね!効果が出たようで私としても嬉しいですww

    ディスクリプションの重複があると、
    Googleさんから「他のサイトの内容をコピーしただけの役に立たないサイト、ユーザにとって価値のないサイト」と判断されてしまい、検索結果の圏外に飛ばされてしまいます・・・。

    そのためディスクリプションは1ページ毎に個別のものを設定することをGoogleさんが推奨しています。
    重複をなくすことで、ユーザーさんが検索した時に自分のサイトが検索結果の中に表示される効果がありますよ(^_^)
    (私も修正する前は、検索した時に自分のサイトが全然ヒットしないことがあって悲しい思いをしましたw)

    今後は記事をいくら追加していってももう大丈夫だと思いますので一安心ですねw
    ※最初からWordpress自体がそういった部分も考慮されていればいいんですけどねぇ・・・w

    2014年10/5

  • とおる

    お世話になります。
    ご報告です。

    先日ディスクリプションの重複をなくすためにタグを入れて見ました。
    すると1週間で58→8までに減りました。
    すごいですね!!
    ありがとうございます。

    そもそもなのですが
    ディスクリプションの重複をなくすと効果が出るのはどんなことでしょうか?
    初心者ですみません。
    どうぞよろしくお願い申し上げます。

    2014年10/3

  • とおる

    丁寧なご回答、ありがとうございます。

    感謝です!

    またその後の経過もご報告させていただきます。

    今後ともどうぞよろしくお願いいたします。

    2014年9/25

  • はじめまして!ご質問ありがとうございます。ご回答させていただきます。
    > このあとはそのまま待てばクロールが読み込むのを待てばよいでしょうか?
    > また書き込んだあとはFetch as Googleで送信をすればよろしいでしょうか?
    └しばらくそのままお待ちください。自動でクロールしてくれますので早ければ1、2週間くらいには変動があります。

    > またこのタグを書き込んだ場合
    > All In One SEO Packはそのまま使い続けるということで、よろしいでしょうか?
    └All In One SEO PackなどのSEOツール系のプラグインは削除してしまって大丈夫ですよ!
     使用したままですと、重複が直らない可能性があるので・・・

    > テンプレートにデフォルトで
    > メタタイトルとメタディスクリプションを書くところがあります。そこを記入するだけで良いのでしょうか?
    └記入いただかなくても記事のタイトルを自動で読み込んでタイトルやディスクリプションに反映する仕組みになっています。

    またなにか不明点ありましたらお気軽にコメント下さいませー!

    2014年9/24

  • トオル

    はじめまして。

    ディスクリプションの重複が出まくっており、
    いろいろ調べたら貴サイトにたどり着きました。

    とてもありがたい情報、大変感謝いたしております。
    早速入れて見たところです。

    素人なので少しだけご教授いただけますでしょうか?

    このあとはそのまま待てばクロールが読み込むのを待てばよいでしょうか?
    また書き込んだあとはFetch as Googleで送信をすれば
    よろしいでしょうか?

    またこのタグを書き込んだ場合
    All In One SEO Packはそのまま使い続けるということで、
    よろしいでしょうか?

    テンプレートにデフォルトで
    メタタイトルとメタディスクリプションを書くところがあります。
    そこを記入するだけで良いのでしょうか?

    不躾にいろいろお聞きして申し訳ございません。
    素人で無礼の儀、お許しください。
    どうぞよろしくお願いいたします。

    2014年9/24

  • […] コードの引用元 Web Desighn Lylic […]

    2014年2/22

  • コメントありがとうございます!この記事がお役に立てたようで嬉しいです!
    その後どうなったか教えて頂けると私としても助かりますのでお時間ありましたらご連絡下さい♪

    2013年3/31

  • WPサイトビギナー運営者

    大変参考になりました。
    WPサイトで重複discriptionがどんどん増加してしまって
    困っていたところです。
    おかげさまで解消されそうでSEO対策としても効果を期待しています。
    またご報告させていただきますね!

    2013年3/20

  • WP初心者

    お返事 早々といただきましてありがとうございます!
    なるほど。分かりました!
    試してみたいと思います! 結果が出たらまたご報告しますね。
    ご親切にありがとうございました☆

    2013年1/21

  • はじめまして。コメントありがとうございます!
    「タイトルの重複をなくす」のコードですが、header.phpの中の

    <head>
    ・・・
    </head>
    

    の中でしたらどの位置に記述しても大丈夫です。わかりづらくってすみません・・・(;o;)ただ、このコードもまだ完ぺきではありませんので、ご了承いただければと思います!何か不具合等ありましたらまたコメント欄にでもご連絡くださいね★

    2013年1/20

  • WP初心者

    はじめまして。記事がとても参考になり、助かっております><

    いかんせん、初心者なもので わからないところがありまして、ご教示いただけるとうれしいのですが、「タイトルの重複をなくす」の コードを書く場所も、header phpのどの部分でもよいのでしょうか? それとも 書く場所は決まっているのでしょうか?  レベル低い質問で申し訳ありません・・・

    2013年1/20

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です