HOME > Web > [Wordpress]プラグインなしでSEO対策(カスタムフィールド利用など)
Wordpressでは有名なSEO対策のプラグイン「All in one SEO pack」というものがありますが、プラグインを使わずにTOPページやカテゴリページ、投稿ページで詳細なSEO対策(具体的にはタイトルやキーワードやDescriptionなどのメタ情報)を細かく設定する方法を紹介します。
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を設定するのは難儀という方にお勧めです。