WordPressでは有名なSEO対策のプラグイン「All in one SEO pack」というものがありますが、プラグインを使わずにTOPページやカテゴリページ、投稿ページで詳細なSEO対策(具体的にはタイトルやキーワードやDescriptionなどのメタ情報)を細かく設定する方法を紹介します。

function.phpに追加するだけ

function.phpにTOPページやカテゴリページ、投稿ページ、固定ページ毎のタイトル、キーワード、Descriptionの設定を記述するだけです。こちらは私の会社で運営している「スマホエージェント」サイトの設定例です。

function print_seo( $post ) {
$cat = get_the_category();
$cat = $cat[0];
$page = get_page(get_the_ID());
$slug = $page->post_name;
$default_title = "スマートフォン・タブレット・HTML5に強いITフリーランス常駐案件情報「スマホエージェント」";
$default_keywords = "フリーランス,Android,タブレット,フリーエンジニア,HTML5";
$default_description = "Androidやクラウドなどの最新の人気スキルを磨けるフリーエンジニアのための常駐案件情報をご紹介させて頂きます。";
if ( is_home() ) {
$title = $default_title;
$keywords = $default_keywords;
$description = $default_description;
} elseif ( is_single() ) {
if($cat->category_nicename == 'findjob'){
$title = $post->post_title."|".get_option('blogname');
//仕事案件情報キーワード
$category = get_the_category( $post->ID );
foreach ( $category as $key ) {
$keywords .= "$key->name,";
}
/* もし、タグがあれば取得 */
if ( $tags = get_the_tags( $post->ID ) ) {
foreach ( $tags as $key ) {
$keywords .= "$key->name,";
}
}
/* 末尾の "," を削除 */
$keywords = preg_replace( '/,$/', '', $keywords );
//仕事案件情報特別
$post_meta_price = get_post_custom_values('project_monthly_price');
$post_meta_skill = get_post_custom_values('project_needskill');
$post_meta_station = get_post_custom_values('project_station');
$post_meta_workstyle = get_post_custom_values('project_workstyle');
$context = 
$post_meta_station[0]."近くの月額".$post_meta_price[0]."のフリーランスエンジニア".
$post_meta_workstyle[0]."案件情報。".$post->post_title."。".$post_meta_skill[0];
/* 本文を 64 文字切り取り */
$description = mb_substr( strip_tags( $context ), 0, 128 );
/* 改行コードを削除 */
$description = preg_replace( '/(rn|r|n)/', '', $description );
}else{
$title = $post->post_title."|".get_option('blogname');
$category = get_the_category( $post->ID );
foreach ( $category as $key ) {
$keywords .= "$key->name,";
}
/* もし、タグがあれば取得 */
if ( $tags = get_the_tags( $post->ID ) ) {
foreach ( $tags as $key ) {
$keywords .= "$key->name,";
}
}
/* 末尾の "," を削除 */
$keywords = preg_replace( '/,$/', '', $keywords );
$description = mb_substr( strip_tags( $post->post_content ), 0, 128 );
$description = preg_replace( '/(rn|r|n)/', '', $description );
}
} elseif ( is_page() ) {
if($slug == "search"){
$title = $post->post_title."|".get_option('blogname');
$keywords = $default_keyword;
$description = mb_substr( strip_tags( $post->post_content ), 0, 128 );
$description = preg_replace( '/(rn|r|n)/', '', $description );
}else{
$title = $post->post_title."|".get_option('blogname');
$keywords = $default_keyword;
$description = mb_substr( strip_tags( $post->post_content ), 0, 128 );
$description = preg_replace( '/(rn|r|n)/', '', $description );
}
} elseif ( is_category() ) { 
$title = single_cat_title('', false)."|".get_option('blogname');
$keywords = single_cat_title('', false).",".$default_keywords;
$description = $default_description;
}elseif ( is_tag() ) { 
$title = single_tag_title('', false)."|".get_option('blogname');
$keywords = single_tag_title('', false).",".$default_keywords;
$description = $default_description;
}else{
$title = $default_title;
$keywords = $default_keywords;
$description = $default_description;
}
echo "<title>".$title."</title>n";
echo "<meta name='keywords' content='$keywords' />n";
echo "<meta name='description' content='$description' />n";
return;
}

これをheader.phpに下記のように呼び出すだけです。

<?php print_seo( $post ); ?>

もちろん、header.phpに記述してある既存の<title>〜</title>は削除してください。そうしないとtitleタグが2つになってしまいますので。

このようにプラグインを使わなくても、ページタイプ毎に条件文を作って、タイトル、キーワード、Descriptionを動的に変更する事ができます。

 

ある特定のカテゴリのみは、カスタムフィールドの情報をキーワードに含める、といった柔軟な設定が可能になります。

 

以外と、All in one SEO packを導入してもいちいち投稿する毎にタイトルやキーワード、Descriptionを設定するのは難儀という方にお勧めです。