検索で旧ブログに訪れた人を、新ブログにスマートに誘導する方法【WordPress】

Sep 24, 2012

あるサイトをリニューアルしました。
リニューアルしてから3ヶ月くらい経つのですが、
アクセス解析をみると、いまだに旧サイトへの検索からの流入が多いです。

旧サイト:おいしく楽しくダイエットごはん
新サイト:あさこ食堂

一応、応急処置として、全ての単一記事(single.php)に
「URL変更のお知らせ」的なものを挿入しているのですが、
検索できてくれたひとが、そこから新URLへのリンクをクリックしても、
ジャンプ先はトップページのため、とても不親切です。

そこで、
「検索キーワードを取得して、新サイトでの検索結果ページへ自動ジャンプ!」
という仕組みを実装しました。
GoogleとYahooのみの対応です。

イメージ図

検索で旧ブログに訪れた人を、新ブログにスマートに誘導する方法【WordPress】

以下のコードをヘッダー(header.php)の先頭に挿入してください

<?php
//検索キーワード取得
$s_url = $_SERVER['HTTP_REFERER'];
if (stripos($s_url, 'google.co.jp')) {//googleのとき
    $s_key_tmp = mb_ereg_replace(".+q=([^&]+).*","\\1",$s_url);
} elseif (stripos($s_url, 'search.yahoo.co.jp')) {//yahooのとき
    $s_key_tmp = mb_ereg_replace(".+p=([^&]+).*","\\1",$s_url);
}
if ($s_key_tmp) {
    $str = urldecode($s_key_tmp);
    $str = mb_convert_kana($str,"s");
    $str= htmlspecialchars($str,ENT_QUOTES,"UTF-8");
}
if($str && !stripos($str,'google.co.jp')){//googleログインしてない場合のみジャンプ
    header("Location: http://asacokitchen.com/?s=".$str);
}
?>

仕組みとしては、
1. $_SERVER[‘HTTP_REFERER’]でリンク元の情報取得
2. mb_ereg_replaceで検索語を抽出(Googleの場合「q=」以降・Yahooの場合「p=」以降)
3. 抽出した文字列をurldecodeでデコードして、mb_convert_kanaで全角スペースを処理
4. 最後に新サイトURLの語尾に「?s=抽出した文字列」を追記したURLへ自動ジャンプ

という流れになります。

Googleで検索ワードを取得出来ない落とし穴が

これで完璧、と思いきや、実は現在、Googleにログインした状態で検索すると、
SSL通信になり、検索ワードが取得できない仕様になっているのです。
参考:Google、SSL検索を日本でもついにデフォルト化 〜 Googleアナリティクスの“not provided”が急増&SPYWの下準備は整った | 海外SEO情報ブログ

Googleアナリティクスのキーワードを調べた時に、
最近「not provided」の数が多いなぁ、と思った方、この仕様が原因です。

ログインしたユーザーが検索して訪れた場合は、
検索ワードが取得出来ないため、自動ジャンプをしたところで、
ヘンテコなワードで検索したことになってしまいます。

それを防ぐため、上記ソース内で!stripos($str,’google.co.jp’)という記述を
if文の中に追加してあげることで、ジャンプしない仕様になっております。

該当サイトがWordPressのため、WordPressテンプレートの編集方法という説明になっていますが、
どんなサイトにも応用は効くと思います。
ぜひ、試してみてください!

白坂翔
白坂翔

1984年生まれ。ボードゲームカフェJELLY JELLY CAFEオーナー、将棋カフェCOBINオーナー、マーダーミステリー専門店Rabbitholeプロデューサー、株式会社人狼の代表取締役。ポーカーとゴルフが好きです。MORE

あわせてどうぞ

初めてルービックキューブ買った