HOME > Web > [Wordpress]プラグインなしでSEO対策(カスタムフィールド利用など)

[Wordpress]プラグインなしでSEO対策(カスタムフィールド利用など)

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