[WordPress] Contact Form 7にプラグイン無しで受付番号を付ける方法
問い合わせ番号(シリアル番号)があった方が管理しやすいですよね。Contact Form 7にはデフォルトで番号付与の機能はありません。リアル番号を付与するプラグインがありますが、更新が何年も止まっています。今回はGeminiさんの協力のもと、プラグイン無しで使える、番号を自動付与するコードを書きました。
付与される番号は、2026年6月17日の場合は、260617-01となり、日が変わると01にリセットされます。複数のフォームがある場合は番号情報を共有し連番にします。
INDEX
ベースの準備
function.phpに下記をコピペ
add_filter('wpcf7_posted_data', function ($post_num) {
// 今日の日付
$today = date('ymd');
$count_key = 'cf7_serial_global_count';
$date_key = 'cf7_serial_global_date';
$last_date = get_option($date_key, '');
if ($last_date !== $today) {
// 日付が変わっていたら、日付を更新してカウントを01にリセット
update_option($date_key, $today);
$count = 1;
} else {
$count = intval(get_option($count_key, 0)) + 1;
}
update_option($count_key, $count);
$serial_no = sprintf('%s-%02d', $today, $count);
$post_num['serial_no'] = $serial_no;
return $post_num;
});
フォームの設定
フォーム本体の設定
フォームタブを開き、下記の様にフォームの送信ボタン(submit)の上にhiddenタグを追記
[hidden serial_no]
[submit "上記の内容で送信"] ↑この上メールの設定
メールタブを開き、シリアル番号を表示したい箇所にserial_noタグを追記する。例えば、題名(件名)に追加すれば便利です。260617-01 お客様控え
[serial_no] お客様控えカスタマイズ
2026年を上記のコードでは26としていますが、2026としたい場合は、yをYにすれば良いです。
$today = date('Ymd');1日の問い合わせが3桁になるような場合は、-01を-001にする必要があります。02dを03dにします。
$serial_number = sprintf('%s-%03d', $today, $count);

コメント ※ハンドルネームでお願いします