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を設定するのは難儀という方にお勧めです。