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