Я создаю плагин формы для обработки форм, которые могут быть подключены разработчиками к действиям / фильтрам.
Мой плагин должен иметь возможность обрабатывать разные формы с разными наборами фильтров, и я вижу 2 способа сделать это.
Способ 1
Огонь конкретных крючков для каждой формы.
Так что код, подобный этому, можно назвать формой в моем плагине:
$formId = 'contact';
$errors = apply_filters('forms_validate_' . $formId, $errors, $data);
И может быть использовано так:
add_filter('forms_validate_contact', function($errors, $data){
if(empty($data['name'])){
$errors['name'] = 'Name is required';
}
return $errors;
} 10, 2)
Способ 2
Передайте параметр вызывающей функции.
Так что код, подобный этому, можно назвать формой в моем плагине:
$formId = 'contact';
$errors = apply_filters('forms_validate', $formId, $errors, $data);
И может быть использовано так:
add_filter('forms_validate', function($formId, $error, $data){
switch($formId){
case 'contact':
if(empty($data['name'])){
$errors['name'] = 'Name is required';
}
break;
}
return $errors;
}, 10, 3)
Есть ли примеры в ядре WordPress, где решается такая проблема?
Есть ли предпочтительный метод борьбы с этим?