WordPressで自動的にmeta情報を生成する機能を実装する

この記事が良ければ、ぜひシェアお願いします

『All in One SEO Pack』や『WordPress SEO by Yoast』(私はこちらを使っています)で、一括でmeta情報を設定するも良し、各記事毎に設定するも良し、なのですが、一括だとその記事で伝えたい特性を適切にロボットに伝えられないし、各記事毎にmeta情報を設定するのはそれはそれで面倒だったりしますよね。

正直なところ、私もだんだんdescriptionを書くのが面倒になって来ていたところで(汗)、どうにかならないかなぁと考えていました。テーマを作るにあたって、meta情報は動的に生成するのが効率的だと模索していたところで、とても参考になるページを見つけました。

参考サイト : WordPressでエントリーごとにkeywordsとdescriptionを自動で設置する方法 | Play Under Wordl

WordPressのheader.phpに挿入することで動的にmeta情報を生成

SEO的に重要と言われてきたmeta情報は入れるべきだと思いますが、keywordsやdescriptionの重要性は薄れてきているとSEO業界では一部噂されているそうです。とは言え、Google検索結果で出てくる説明文はdescriptionですし、無いよりはもちろん有った方がいいに決まっているので(全然異なる内容はマズイですがw)、設定しておいた方がよいでしょう。

Play Under Worldさんでは、header.phpにあるルールに則ってkeywordsやdescriptionを生成するコードを掲載されています。

エントリーページの「keywords」には、そのエントリーが属するカテゴリーを入れる。
エントリーにタグが付けられていた場合「keywords」にタグも入れる。
エントリーページ以外の「keywords」には、デフォルトのキーワードを入れておく。
エントリーページの「description」には、抜粋に自分で作成した要約がある場合はそれを入れる。
抜粋に何もない場合「description」には、エントリーの始めから60文字分を入れる。
エントリーページ以外の「description」には、一般設定のキャッチフレーズ(このサイトの簡単な説明)を入れる。

現在作成中のテーマでは、参考にさせて頂いてこのように設定しています。

<!-- メタ情報動的生成 --!>
<?php if ( is_single() ) {
	<meta name="keywords" content="<?php foreach((get_the_category()) as $category) { echo $category->cat_name . ',';
		} $posttags = get_the_tags();
		if ($posttags) {
			foreach($posttags as $tag) {
				echo $tag->name . ',';
		}
	} ?>" />
<?php if ($post->post_excerpt){
	$summary = strip_tags($post->post_excerpt);
	$summary = ereg_replace("(rn|r|n)", "", $summary); ?>
<meta name="description" content="<? echo $summary; ?>" />
<?php } else {
	$content_summary = strip_tags($post->post_content);
	$content_summary = ereg_replace("(rn|r|n)", "", $content_summary);
	$content_summary = mb_substr($content_summary, 0, 60). "..."; ?>
<meta name="description" content="<?php echo $content_summary; ?>" />
<?php } ?>
<?php } else {
	<meta name="keywords" content="WordPress,HTML,CSS,テーマ,theme,Javascript,Webデザイン,Web design" />
	<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php } ?>
<!-- メタ情報動的生成 --!>

プラグインの数を減らせるメリットもあったりするので(笑)、手間を省きたいと考えている場合には良いと思います。

— 2012/01/22追記
上記のコードだと環境によっては動かない場合もあるようなので、別の方法も追記したいと思います。

参考サイト : WordPress:プラグインなしでできる高機能カスタマイズ9つ

WordPressのheader.phpに挿入することで動的にmeta情報を生成 その2

あらかじめ設定しておかないといけないものはもちろんありますが、条件によって適切になるように少しずつifで条件分岐しているコードになります。ロジックとしてはシンプルになるので、環境によっての影響は起こりにくいかと思います。

■タイトルを自動的に重複なく出力する

<title>
<?php if ( is_home() ) { ?>トップページのタイトル
<?php } elseif ( is_search() ) { ?>検索結果:<?php echo the_search_query(); ?> | サイト名
<?php } elseif ( is_single() ) { ?><?php wp_title(''); ?> | サイト名
<?php } elseif ( is_page() ) { ?><?php wp_title(''); ?> | サイト名
<?php } elseif ( is_category() ) { ?>「<?php single_cat_title(); ?>」一覧 | サイト名
<?php } elseif ( is_month() ) { ?><?php the_time('Y年F'); ?>の記事 | サイト名
<?php } elseif ( is_tag() ) { ?>「<?php single_tag_title();?>」一覧 | サイト名
<?php } else { ?>404エラー | サイト名<?php } ?>
</title>

■meta descriptionを自動的に重複なく出力する

<meta name="description" content="<?php
    $pattern = '/(^.{99})(.+)/u';
    $subject = post_custom('article');
    $matches = array();
    preg_match($pattern, $subject , $matches);
    if ($matches[2] != '') {
        $out = $matches[1] . '...';
    } else {
        $out = $subject;
    }
    echo($out);
?>" />

■meta keywordsを自動的に重複なく出力する

<meta name="keywords" content="全ページに入れたいキーワード1,全ページに入れたいキーワード2,全ページに入れたいキーワード3,
<?php if ( is_home() ) { ?>トップページに入れたいキーワード1,トップページに入れたいキーワード2,トップページに入れたいキーワード3
<?php } elseif ( is_category() ) { ?><?php single_cat_title(); ?>
<?php } elseif ( is_tag() ) { ?><?php single_tag_title();?>
<?php } elseif ( is_search() ) { ?><?php echo the_search_query(); ?>
<?php } elseif ( is_page() ) { ?><?php wp_title(''); ?>
<?php } elseif ( is_single() ) { ?><?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?><?php wp_title(''); ?>,<?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?>
<?php endwhile; ?><?php else : ?><?php endif; ?>
<?php } ?>" />
スポンサーリンク

この記事が良ければ、ぜひシェアお願いします

もぐ
年齢 : 30代半ばの1児の新米パパ。ITネットワークから始まり、WEBディレクター、WEBシステム系のプロマネ、データ分析など色々やってるエンジニアです。WordPress、Webサービス構築、BIツール、IoTなどがトレンド。新しくて面白い仕事募集中。
スポンサーリンク