WordPressを使ってウェブサイトを構築する際、特定の情報を一時的に保存したい場面が出てくることがあります。この記事では、functions.phpを利用してURLのクエリパラメータをセッションに保存し、そのセッションの値をショートコードやMW WP Formのメールタグで呼び出す方法、さらにセッション変数の値に基づいて異なるコンテンツを表示する方法を解説します。

PHPの「セッション」入門と、Googleアナリティクスの「セッション」との違いについて

http://www.lining-moon.casa/andplus.co.jp_230822_230809/2023/08/post-4841/

1. URLのクエリパラメータをセッションに保存

まず、セッションを開始するための関数と、URLのクエリパラメータをセッションに保存する関数を「functions.php」に追加します。


/* $_SESSION(セッション) 開始
࿐༶⊰⟡⊱༶⊰⟡⊱༶⊰⟡⊱༶❀༶⊰⟡⊱༶⊰⟡⊱༶⊰⟡⊱༶༄ */
function init_session_start() {
  if (session_status() !== PHP_SESSION_ACTIVE) {
    session_start();
  }

  $params = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'ancestor', 'referral', 'ref_name', 'edomain']; //保存したいパラメータを配列に追加

  //?$params= を、それぞれセッション $_SESSION[$param] に記憶
  foreach ($params as $param) {
    if (isset($_GET[$param])) {
      $_SESSION[$param] = sanitize_input($_GET[$param]);
    }
    //JS変数 $_SESSION_{$param} = "セッション値"; にもそれぞれ代入 
    echo '';
  }
}

function sanitize_input($data) {
  return htmlspecialchars(stripslashes(trim($data)));
}
add_action('init', 'init_session_start');

2. セッションの値をショートコードで呼び出す

ショートコードを利用してセッションの値を呼び出す関数を追加します。


/* ショートコード:$_SESSION(セッション)
────────────── ༚༶⊰⟡⊱༶༚༺ */
function shortcode_utm_source() {
  return isset($_SESSION['utm_source']) ? $_SESSION['utm_source'] : '';
}
add_shortcode('utm_source', 'shortcode_utm_source');

function shortcode_utm_medium() {
  return isset($_SESSION['utm_medium']) ? $_SESSION['utm_medium'] : '';
}
add_shortcode('utm_medium', 'shortcode_utm_medium');

function shortcode_utm_campaign() {
  return isset($_SESSION['utm_campaign']) ? $_SESSION['utm_campaign'] : '';
}
add_shortcode('utm_campaign', 'shortcode_utm_campaign');

function shortcode_utm_term() {
  return isset($_SESSION['utm_term']) ? $_SESSION['utm_term'] : '';
}
add_shortcode('utm_term', 'shortcode_utm_term');

function shortcode_utm_content() {
  return isset($_SESSION['utm_content']) ? $_SESSION['utm_content'] : '';
}
add_shortcode('utm_content', 'shortcode_utm_content');

function shortcode_ancestor() {
  return isset($_SESSION['ancestor']) ? $_SESSION['ancestor'] : '';
}
add_shortcode('ancestor', 'shortcode_ancestor');

function shortcode_referral() {
  return isset($_SESSION['referral']) ? $_SESSION['referral'] : '';
}
add_shortcode('referral', 'shortcode_referral');

function shortcode_ref_name() {
  return isset($_SESSION['ref_name']) ? $_SESSION['ref_name'] : '';
}
add_shortcode('ref_name', 'shortcode_ref_name');

function shortcode_edomain() {
  return isset($_SESSION['edomain']) ? $_SESSION['edomain'] : '';
}
add_shortcode('edomain', 'shortcode_edomain');

このショートコードを利用すると、[utm_source"]等でセッションの値を表示できます。

3. MW WP Formのメールタグでセッションの値を呼び出す

MW WP Formのメールタグを利用してセッションの値を呼び出す関数を追加します。


function add_sender_info($value, $key, $insert_contact_data_id) {
  //$_SESSION(セッション)
  if ($key === 'utm_source') {
    return isset($_SESSION['utm_source']) ? $_SESSION['utm_source'] : '';
  }
  if ($key === 'utm_medium') {
    return isset($_SESSION['utm_medium']) ? $_SESSION['utm_medium'] : '';
  }
  if ($key === 'utm_campaign') {
    return isset($_SESSION['utm_campaign']) ? $_SESSION['utm_campaign'] : '';
  }
  if ($key === 'utm_term') {
    return isset($_SESSION['utm_term']) ? $_SESSION['utm_term'] : '';
  }
  if ($key === 'utm_content') {
    return isset($_SESSION['utm_content']) ? $_SESSION['utm_content'] : '';
  }
  if ($key === 'ancestor') {
    return isset($_SESSION['ancestor']) ? $_SESSION['ancestor'] : '';
  }
  if ($key === 'referral') {
    return isset($_SESSION['referral']) ? $_SESSION['referral'] : '';
  }
  if ($key === 'ref_name') {
    return isset($_SESSION['ref_name']) ? $_SESSION['ref_name'] : '';
  }
  if ($key === 'edomain') {
    return isset($_SESSION['edomain']) ? $_SESSION['edomain'] : '';
  }
  return $value;
}
add_filter('mwform_custom_mail_tag_mw-wp-form-{form_id}', 'add_sender_info', 10, 2);

4. セッション変数の値に基づいて異なるコンテンツを表示

セッションの値に応じて異なるコンテンツを表示する方法も簡単です。


if ($_SESSION['ref_name'] === 'irregular') {
  get_header('irregular');
} else {
  get_header('default');
}

このように、セッションの値をチェックして条件分岐を行い、異なるヘッダーやコンテンツを表示することができます。

まとめ

WordPressのfunctions.phpを利用して、簡単にセッションを活用することができます。この機能を活用することで、ユーザーエクスペリエンスの向上や、効果的なマーケティング活動を行うことができます。