検索で旧ブログに訪れた人を、新ブログにスマートに誘導する方法【WordPress】
あるサイトをリニューアルしました。
リニューアルしてから3ヶ月くらい経つのですが、
アクセス解析をみると、いまだに旧サイトへの検索からの流入が多いです。
旧サイト:おいしく楽しくダイエットごはん
新サイト:あさこ食堂
一応、応急処置として、全ての単一記事(single.php)に
「URL変更のお知らせ」的なものを挿入しているのですが、
検索できてくれたひとが、そこから新URLへのリンクをクリックしても、
ジャンプ先はトップページのため、とても不親切です。
そこで、
「検索キーワードを取得して、新サイトでの検索結果ページへ自動ジャンプ!」
という仕組みを実装しました。
GoogleとYahooのみの対応です。
イメージ図
以下のコードをヘッダー(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テンプレートの編集方法という説明になっていますが、
どんなサイトにも応用は効くと思います。
ぜひ、試してみてください!