1. HOME
  2. ブログ
  3. プレビュー
  4. ホームページカスタマイズマニュアル
BLOG

よくある質問・ブログ

プレビュー

ホームページカスタマイズマニュアル

≪この記事は柔道整復師、はり師、きゅう師、あん摩マッサージ指圧師向けです≫

会員番号と施術所番号で自動入力(本番まだ未実装)

組合員向けのフォームで会員番号を入力したら、組合員(施術者)氏名・施術所名・メールアドレス・電話番号が自動で入力されるようにカスタマイズ。

CSVデータの用意

会員一覧のエクセルを会員番号を表示するように変更して、CSVデータに変換する。
CSV名は「member_list.csv」にする。
このCSVファイルをFTPでuploadsフォルダーの中のcsvフォルダーにアップロード。
/home/zenjukyo1/www/wp/wp-content/uploads/csv

csvフォルダーの中の「.htaccess」について
ブラウザから下記ファイルパスにアクセスされたときに開かれないようにしている。
https://www.zenjukyo.gr.jp/wp/wp-content/uploads/csv/member_list.csv

自動入力を適用するフォームにID付与

・会員番号 id:member_id
・施術所番号 id:clinic_id
・組合員(施術者)氏名 your_name
・施術所名 id:clinic_name
・メールアドレス id:your_email
・電話番号 id:phone

例:[text* your-number id:member_id]

javascriptの追記

custum.jsに記述追記する。
会員番号入力時に Ajax で情報を取得し、フォームへ自動入力する処理。

追記分 JavaScript 全文

let timer = null;

function attachMemberEvent() {
  const memberInput = document.getElementById('member_id');
  const clinicInput = document.getElementById('clinic_id');

  if (!memberInput || !clinicInput) return;

  function fetchMemberInfo() {
    const memberId = memberInput.value;
    const clinicId = clinicInput.value;

    if (!memberId || !clinicId) return;

    const url = `https://www.zenjukyo.gr.jp/wp/wp-admin/admin-ajax.php?action=get_member_info&member_id=${memberId}&clinic_id=${clinicId}`;

    fetch(url)
      .then(res => res.json())
      .then(data => {
        if (data.success) {
          document.getElementById('your_name').value = data.data.name;
          document.getElementById('clinic_name').value = data.data.clinic_name;
          document.getElementById('your_email').value = data.data.email;
          document.getElementById('phone').value = data.data.phone;
        }
      });
  }

  function debounceFetch() {
    clearTimeout(timer);
    timer = setTimeout(fetchMemberInfo, 300); // ← 0.3秒後に実行
  }

  memberInput.addEventListener('input', debounceFetch);
  clinicInput.addEventListener('input', debounceFetch);
}

document.addEventListener('DOMContentLoaded', attachMemberEvent);

functions.phpに追記(Ajax で CSV を検索)

テーマフォルダー直下にあるfunctions.phpに記述追記する。
会員番号と施術所番号を受け取り、CSV から該当データを返す処理。

追記分 php 全文

add_action('wp_ajax_get_member_info', 'get_member_info');
add_action('wp_ajax_nopriv_get_member_info', 'get_member_info');

function get_member_info() {
    $member_id = sanitize_text_field($_GET['member_id']);
    $clinic_id = sanitize_text_field($_GET['clinic_id']); // ★追加
    $csv_path = '/home/zenjukyo1/www/wp/wp-content/uploads/csv/member_list.csv';

    if (!file_exists($csv_path)) {
        wp_send_json_error('CSV not found');
    }

    $file = new SplFileObject($csv_path);
    $file->setFlags(SplFileObject::READ_CSV);

    $headers = [];
    $is_header = true;

    foreach ($file as $row) {

        if (!$row || count($row) < 2) continue; // 最初の行はヘッダー if ($is_header) { $row[0] = preg_replace('/^\xEF\xBB\xBF/', '', $row[0]); $headers = $row; $is_header = false; continue; } $data = array_combine($headers, $row); if (!$data) continue; /*--------------------------------------- ★ 会員番号:完全一致のみ ---------------------------------------*/ if (trim($data["会員番号"]) !== $member_id) { continue; } /*--------------------------------------- ★ 施術所番号:完全一致 or 0 + CSV の5桁 ---------------------------------------*/ $csv_clinic = trim($data["施術所番号"]); $input_clinic = $clinic_id; $clinic_match = ($input_clinic === $csv_clinic) || // 完全一致 ($input_clinic === '0' . $csv_clinic); // 先頭0を1個だけ付けた5桁 if (!$clinic_match) { continue; } /*--------------------------------------- ★ 一致したので返す ---------------------------------------*/ wp_send_json_success([ 'name' => $data["施術者_姓"] . ' ' . $data["施術者_名"],
            'clinic_name' => $data["施術所_施術所名"],
            'email'       => $data["施術所_情報配信メールアドレス"],
            'phone'       => $data["施術所_施術所電話番号"],
        ]);
    }

    wp_send_json_error('Not found');
}

※CSVのファイル名やCSVデータの各セルヘッダーの名称を変えた場合は変更が必要

会員番号と施術所番号は強制的に半角数字に

custum.jsに記述追記する

追記分 JavaScript 全文

document.addEventListener('DOMContentLoaded', function () {
  const memberEl = document.getElementById('member_id');
  const clinicEl = document.getElementById('clinic_id');

  function toHankaku(el) {
    if (!el) return;
    el.addEventListener('input', function () {
      this.value = this.value.replace(/[0-9]/g, function (s) {
        return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
      });
    });
  }

  toHankaku(memberEl);
  toHankaku(clinicEl);
});
  

郵便番号で自動入力

フォームで郵便番号を入力すると自動で住所の都道府県・市区町村・地域名まで自動入力されるように。
プラグインの「zipaddr-jp」を使用する。

「zipaddr-jp」の使用方法

フォームにIDを付与する。
・郵便番号 id:zip
・都道府県 id:pref
・市町村、番地  id:addr
※複数あるときは下記にように末尾に数字を増やしていく
・郵便番号 id:zip2
・都道府県 id:pref2
・市町村、番地  id:addr2

集患プランテンプレートの色を選択で画像表示切替

集患プランページのテンプレートタイプでの画像切替について

テンプレート②において色の追加方法

セレクトボックスの中に色を追加して、custum.jsに追記する

JavaScript 記述箇所

/*---------------テンプレート02---------------*/
document.addEventListener("DOMContentLoaded", function () {
  const select2 = document.getElementById("color2");

  // color2 が存在しないページでは何もしない(エラー防止)
  if (!select2) return;

  // 対象となるテンプレート要素
  const items2 = {
    "green": document.querySelector(".tem2_green"),
    //"navy": document.querySelector(".tem2_navy"),
    //"brown": document.querySelector(".tem2_brown")
  };

  // 初期化(全部 open を外す)
  function resetOpen2() {
    Object.values(items2).forEach(el => {
      if (el) el.classList.remove("open");
    });
  }

  // セレクト変更時の処理
  select2.addEventListener("change", function () {
    resetOpen2();
    const selected = this.value;
    if (items2[selected]) {
      items2[selected].classList.add("open");
    }
  });
});

  

例としてコメントアウトしている下記などを変更してもらえれば大丈夫です
//”navy”: document.querySelector(“.tem2_navy”),
//”brown”: document.querySelector(“.tem2_brown”)
※色を追加した際は申込フォームにもカラー追記忘れずに

入会・開業に関するお問い合わせ、ご相談等、お気軽にどうぞ
全国柔整鍼灸協同組合
お問い合わせ

資料請求《無料》

無料セミナー・相談

お問い合わせ(組合員)

関連記事

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Search in posts
Search in pages