とある案件でイベントごとにフォームを複製して運用したいという要望があり、共通のエラーメッセージを出したいけどformkeyが毎回変わってしまうのでDBから登録済みのformkeyを取ってくるという方法で対応しました。
function.php
function form_error_message( $error, $key, $rule ) {
// ラジオボタン or チェックボックス
$required_items = [
'お問い合わせ種別'
];
foreach($required_items as $value){
if ( $key === $value && $rule === 'required' ) {
return $value.'を選択してください';
}
}
$noempty_items = [
'お名前',
'フリガナ',
'郵便番号',
'市区町村',
'丁目番地',
'電話番号',
'メールアドレス',
'メールアドレス(確認用)',
'お問い合わせ内容'
];
foreach($noempty_items as $value){
if ( $key === $value && $rule === 'noempty' ) {
return $value.'は必須項目です';
}
}
$katakana_items = [
'フリガナ',
];
foreach($katakana_items as $value){
if ( $key === $value && $rule === 'katakana' ) {
return $value.'はカタカナで入力してください';
}
}
if ( $key === 'メールアドレス' && $rule === 'mail' ) {
return 'メールアドレスの形式ではありません。';
}
if ( $key === 'メールアドレス(確認用)' && $rule === 'eq' ) {
return 'メールアドレスが一致しません';
}
return $error;
}
function get_all_form_key() {
global $wpdb;
$rows = $wpdb->get_results("
SELECT *
FROM $wpdb->postmeta
WHERE `meta_key` = 'mw-wp-form'
");
foreach ($rows as $row) {
add_filter('mwform_error_message_mw-wp-form-'.$row->post_id, 'form_error_message', 10, 3 );
}
}
get_all_form_key();