WordPressのプラグイン「MW WP Form」は、ウェブサイトにカスタムフォームを追加するための強力なツールです。その中には、日付を選択するための「日付ピッカー」も含まれています。この記事では、その日付ピッカーの使い方と、特定の日を選択不可にする方法を解説します。
MW WP Formの日付ピッカーとは
MW WP Formの日付ピッカーは、[mwform_datepicker]というショートコードを使用してウェブページに追加できます。このショートコードは、ユーザーがカレンダーから日付を選択できるUIを生成します。
以下に、基本的なパラメータを使用した例を示します:
[mwform_datepicker name="preferday1" id="mw-client-preferday1" class="input" js="minDate: 30, maxDate: 90" placeholder=" 日付を選択"]
このショートコードのパラメータについて説明します:
name: フォームフィールドの名前を指定します。これは、フォームデータをサーバーに送信するときに使用されます。
id: HTML要素のIDを指定します。これは、CSSスタイリングやJavaScriptで特定の要素を参照するために使用されます。
class: HTML要素のクラスを指定します。これも、CSSスタイリングやJavaScriptで特定の要素を参照するために使用されます。
js: JavaScriptのオプションを指定します。ここで指定されたオプションは、日付ピッカーの動作に影響します。例えば、minDate: 30, maxDate: 90は、選択可能な日付範囲を現在の日付から30日後から90日後までに制限します。
placeholder: フォームフィールドが空のときに表示されるテキストを指定します。
特定の日を選択不可にする
日付ピッカーをさらにカスタマイズして、特定の日(例えば、定休日や祝日)を選択不可にすることも可能です。以下に、その方法を示します。
<script>
//定休日をカレンダーから選択不可にする
jQuery(function ($) {
var holidays = [
20230101, 20230102, 20230109, 20230211, 20230223, 20230321, 20230429, 20230503, 20230504, 20230505, 20230717, 20230811, 20230918, 20230923, 20231009, 20231103, 20231123, 20231223, 20231231
];
var exOpenday = [
// ここに特別に営業する日を追加します。例:20230506, 20230507
];
$(".hasDatepicker").datepicker("option", "beforeShowDay", function (date) {
var yymmdd = date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate();
var day = date.getDay();
var isHoliday = holidays.includes(yymmdd);
var isHoliDayWeek = (day == 0 || day == 6);
var isExOpenday = exOpenday.includes(yymmdd);
return [(isHoliday || isHoliDayWeek) && !isExOpenday ? false : true];
});
//日付ピッカーの項目のみ、オートコンプリート機能を無効
$('form .hasDatepicker').attr('autocomplete', 'off');
});
</script>
このコードでは、holidaysという配列に祝日の日付を格納し、exOpendayという配列に特別に営業する日を格納します。そして、beforeShowDay関数内で、選択された日付が祝日または週末(土曜日または日曜日)であるかどうかをチェックします。もし祝日または週末であれば、その日は選択できないように設定します。ただし、その日がexOpendayに含まれている場合は、その日を選択できるようにします。
以上が、MW WP Formの日付ピッカーの使い方と、特定の日を選択不可にする方法の解説です。この情報が役立つことを願っています。
