クッキーで新規かリピーターを判定してコンテンツを変える

ヘッダ画像

クッキーで新規かリピーターを判定してコンテンツを変える

ページの閲覧がはじめてか再訪問かでコンテンツを変えたい。
このような場合はクッキーの有無で条件分岐することができます。
まずは初回訪問時にクッキーを発行する必要があります。

<?php
//cookieの発行処理
add_action('get_header', 'my_setcookie');
function my_setcookie() {
  if (isset($_COOKIE['visited'])){
    //cookieがすでにセットされていたら再セットしない
    return;
  }
  if(is_single()){ //ブログページを表示したときにCookieをセット
    $expire_time = time() + 60*60*24*30; //Cookieの有効期限は30日
    $visited_time = time(); //現在の時刻
    setcookie('visited', $visited_time, $expire_time, COOKIEPATH, COOKIE_DOMAIN);
  }
}
?>

WordPressでのクッキーはheader.phpを読み込む直前にセットすればよいでしょう。
functions.phpget_header()のアクションフックとして定義します。

それでは、クッキーの有無による条件分岐を行ってみます。
こちらは実際に出力するテンプレートに記述します。

<?php if (!isset( $_COOKIE['visited'] )) : ?>
//cookieがセットされていなかった場合
初回訪問
<?php else : ?>
//cookieが有効
訪問済
<?php endif; ?>

以下は初回訪問~3日以内の条件分岐となります。
ウエルカムクーポンなどに使えそうですね。

<?php if ( !isset( $_COOKIE['visited'] ) || time() <= ($_COOKIE['visited'] + 60*60*24*3)) : ?>

次は記事中のコンテンツを変更するためにショートコードとして実装してみます。
記述場所はfunctions.phpです。

<?php
//cookieの有効・無効を判定する処理
function is_cookie_valid(){
  if (!isset($_COOKIE['visited'])){
    //cookieがセットされていなかった場合
    return true;
  }
  $visited_time = $_COOKIE['visited'];
  $current_time = time();
  if ($current_time - $visited_time < 60*60*24*15){
    //cookieが15日未満であった場合
    return false;
  }elseif ($current_time - $visited_time < 60*60*24*30){
    //cookieが15日以上~30日未満であった場合
    return true;
  }
  //それ以外(30日以上)
  return false;
}

//cookie関連コンテンツの表示処理
function print_cookie_content(){
  $ret = is_cookie_valid();
  if ($ret){
    //cookieが有効(コンテンツ表示)
    $str = get_template_part('insert');
  }else{
    //cookieが無効(コンテンツ非表示)
    $str = '';
  }
  return $str;
}
add_shortcode('cookiecontent', 'print_cookie_content');
?>

有効判定の場合はinsert.phpというテンプレートファイルを読み込みます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です



関連記事

WordPressのユーザー名は丸見え!? 知っていますか?WordPressのログインユーザー名はだだ漏れだという事実を...ダッシュボード乗っ取り防止のためのセ...

絶対に分かる!WordPressの子テーマ作成 WordPressでは子テーマという機能があります。既存のテーマを作成すれば、カスタマイズする際に変更したい部分だけを子...

WordPressのRSSフィードを完全にコントロールする WordPressではコンテンツの更新情報を知らせるために標準でRSSを出力します。その出力方法は...http://e...

「トップに戻る」ボタンでスマホでのユーザビリティアップ! ウェブサイト上でコンテンツを下にスクロールさせると「トップに戻る」ボタンが出現して、クリックするとビューンとページの初め...