検索キー履歴を表示する方法

Cocoonカスタマイズ集
この記事は約4分で読めます。
記事内に広告が含まれています。

完成イメージ

使用方法

以下にショートコードを示します。

[my_search_key_history]

実装手順

以下のコードをfunctions.phpに追加します。

add_shortcode('my_search_key_history', function () {
  $cookieKey = 'my_search_keys';
  $search_keys = [];

  // クッキーを取得
  if (isset($_COOKIE[$cookieKey])) {
    $search_keys = explode(',', $_COOKIE[$cookieKey]);

    // クッキーの有効期限を更新
    setcookie($cookieKey, $_COOKIE[$cookieKey], time() + YEAR_IN_SECONDS, '/');
  }

  // 検索キーを取得
  if (isset($_GET['s']) && !empty($_GET['s'])) {
    $search_key = stripslashes($_GET['s']);
    $search_key = esc_html($search_key);

    // 新規検索キーを追加
    if (!in_array($search_key, $search_keys, true)) {
      array_unshift($search_keys, $search_key);
      $search_keys_str = implode(',', $search_keys);

      // クッキーの有効期限を1年後に設定
      setcookie($cookieKey, $search_keys_str, time() + YEAR_IN_SECONDS, '/');
    }
  }

  // 検索キーを削除
  if (isset($_POST['clear_keys'])) {
    setcookie($cookieKey, '', time() - HOUR_IN_SECONDS, '/');
    $search_keys = [];
  }

  ob_start();
  ?>
  <style>
  .search_key_history form {
    text-align: center;
  }

  /* 非活性 */
  .search_key_history .btn-black {
    background-color: #ccc;
    border-color: #ccc;
    pointer-events: none;
  }

  /* 活性 */
  .search_key_history .btn-black.active {
    background-color: #ff0000;
    border-color: #ff0000;
    cursor: pointer;
    pointer-events: auto;
  }
  </style>

  <div class="search_key_history">
    <?php if (empty($search_keys)) : ?>
      <p>検索履歴はありません。</p>
    <?php else : ?>
      <ul>
        <?php foreach ($search_keys as $key) : ?>
          <li><?= $key; ?></li>
        <?php endforeach; ?>
      </ul>
    <?php endif; ?>

    <form method="POST" action="">
      <button type="submit" name="clear_keys" class="btn btn-black <?= !empty($search_keys) ? 'active' : ''; ?>">
        検索履歴をクリア
      </button>
    </form>
  </div>
  <?php
  return ob_get_clean();
});

検索履歴をクッキーに保存し、最新の検索キーを先頭に表示します。

参考:クッキーの保存先

図1にクッキーの保存先を示します。
Chromeデベロッパーツールでアプリケーション→ストレージ→Cookieを選択することで確認できます。

さいごに

今回紹介した方法を使えば、検索キー履歴を簡単に表示できるようになります。
これにより、ユーザーが過去の検索内容を簡単に確認できる便利な機能が提供されます。

タイトルとURLをコピーしました