Проверка Пользовательских Значений Мета-Полей и Обязательных Полей
То, чего я никогда не видел, - это лучший способ проверить правильность заполнения определенных полей формы для пользовательских мета-полей типа записи.
Я ищу мнения экспертов о том, как лучше всего проверять пользовательские поля для любых метабоксов, которые можно создать. Мой интерес заключается в том, чтобы:
- убедитесь, что проверка поля выполняется до публикации/обновления публикации
- использование класса/кода, который не конфликтует с другими wordpress javascript
- позволяет определять определенные поля по мере необходимости, в то время как другие могут быть необязательными
- проверка полей на основе настраиваемых правил, включая регулярное выражение для таких вещей, как формат электронной почты
- управление визуальным отображением любых ошибок/уведомлений
Заранее спасибо!
5 answers
Самый простой способ - добавить проверку Javascript с помощью плагина jQuery Validate. Вот самое основное пошаговое руководство:
Рядом с вашим вызовом add_meta_box поставьте в очередь плагин проверки jQuery, а также файл JS для вашего простого скрипта:
add_action('admin_enqueue_scripts', 'add_my_js');
function add_my_js(){
wp_enqueue_script('my_validate', 'path/to/jquery.validate.min.js', array('jquery'));
wp_enqueue_script('my_script_js', 'path/to/my_script.js');
}
Затем в my_script.js включите следующее:
jQuery().ready(function() {
jQuery("#post").validate();
});
Это позволит выполнить проверку в форме отправки. Затем в обратном вызове add_meta_box, где вы определяете настраиваемые поля, вы добавляете "обязательный" класс для каждого поля вы хотите подтвердить, например:
<input type="text" name="my_custom_text_field" class="required"/>
Все поля с "обязательными" в их классе будут проверены при сохранении/публикации/обновлении публикации. Все другие параметры проверки (правила, стиль ошибок и т. Д.) Могут быть установлены в документе.функция готовности в my_script.js ; проверьте документы jQuery для проверки всех параметров.
Полный базовый код для добавления проверки jQuery:
-
Поставьте в очередь сценарий проверки. Я предполагаю, что jQuery уже запрошен.
add_action('admin_enqueue_scripts',function($id){ $validation',$validation_js_url = #your validation.js source; wp_register_script( 'validation',$validation_js_url,array(),'',true ); wp_enqueue_script( 'validation' ); });
-
В файле js или теге скрипта:
jQuery(document).ready(function($){ var form = $("form[name='post']"); $(form).find("input[type='submit']").click(function(e){ e.preventDefault(); $(form).validate(); if($(form).valid()) { $("#ajax-loading").show(); $(form).submit(); }else{ $("#publish").removeClass().addClass("button-primary"); $("#ajax-loading").hide(); } }); });
Сделано :)
Я использовал этот код, очень полезный, просто изменил:
$(form).find("input[type='submit']").click(function(e){
Кому:
$(form).find("#publish").click(function(e){
Потому что, если у вас есть другая форма внутри основной формы, это запускает скрипт.
И:
$(form).submit();
Кому:
$(this).submit();
Потому что первая строка сохраняет сообщение только как черновик, и вы больше не можете его публиковать.
Здесь все написано: http://allgraphics.it/blog/2012/10/jquery-validation-sui-campi-di-input-postcustom-post-di-wordpress/
Я нашел этот подход для решения проблемы проверки полей метабокса с помощью PHP-кода
Https://tommcfarlin.com/post-meta-data-error-messages/
Надеюсь, это поможет вам (работает для меня в аналогичном сценарии)
Если вы хотите иметь возможность проверять на стороне сервера, самый простой вариант - использовать Расширенные пользовательские поля для определения пользовательских макетов полей, а затем Проверенное поле надстройка для настройки проверки для каждого поля в администраторе WordPress.