カテゴリー
WordPressカスタマイズ

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

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

<?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を読み込む直前にセットすればよいでしょう。
get_header()のアクションフックとしてfunctions.phpで定義します。

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

<?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というテンプレートファイルを読み込みます。
投稿中の読み込みたい箇所に[cookiecontent]を記述します。

昨今、欧州 GDPR や米国 CCPA など、プライバシー保護の観点でクッキーへの規制が強まっていますが、この対象はサードパーティークッキー(3rd party Cookie)です。
ここで紹介しているサイトの運営者が発行するファーストパーティークッキー(1st party Cookie)は規制の対象ではありません。
profile image

執筆:R3098

WEB サービス構築・監修が生業です。WordPress 関連では Aurora Heatmap などプラグイン開発も行っています。悩めるサイト運営者の無料相談受付けます!

コメントを残す

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

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。