ホームページカスタマイズマニュアル
会員番号と施術所番号で自動入力(本番まだ未実装)
組合員向けのフォームで会員番号を入力したら、組合員(施術者)氏名・施術所名・メールアドレス・電話番号が自動で入力されるようにカスタマイズ。
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”)
※色を追加した際は申込フォームにもカラー追記忘れずに

