netconstructorcom
  • 0
Мастер

Проверка пользовательских значений метабоксов и обязательных полей

  • 0

Что-то, что я никогда не видел, является лучшим способом проверки правильности заполнения определенных полей формы для мета-полей пользовательских типов сообщений.

Я ищу мнения экспертов о том, как лучше всего проверять настраиваемые поля для любых метабоксов, которые можно создать. Мой интерес заключается в:

  • убедитесь, что проверка поля выполняется до публикации/обновления публикации
  • использование класса/кода, который не конфликтует с другим javascript wordpress
  • позволяет вам определить определенные поля по мере необходимости, в то время как другие могут быть необязательными
  • проверять поля на основе настраиваемых правил, включая регулярное выражение для таких вещей, как формат электронной почты
  • управлять визуальным отображением любых ошибок/уведомлений

Заранее спасибо!

Share
  1. Самый простой способ — добавить валидацию Javascript через плагин jQuery Validate. Вот самое основное пошаговое руководство:

    Рядом с вашим вызовом add_meta_box поставьте в очередь плагин jQuery Validate, а также файл 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"/>
    

    Все поля с «обязательными» в своем классе будут проверяться при сохранении/публикации/обновлении сообщения. Все остальные параметры проверки (правила, стили ошибок и т. д.) можно установить в функции document.ready в my_script.js; проверьте документы jQuery Validate для всех параметров.

    • 0
    • Спасибо, я попробую завтра, но не могли бы вы объяснить, как проводить различные проверки. Например, проверка правильности адреса электронной почты, проверка того, что есть не более или по крайней мере XX символов, что поле формы заполнено… что-то в этом роде?

      • 0
    • Кроме того, проверяется ли это перед сохранением/обновлением сообщения? Если нет, то как я могу это сделать?

      • 0
    • Примеры и документация для плагина jQuery Validation (ссылка в моем ответе) покажут вам, как делать все это. Проверка происходит при отправке по умолчанию, но вы можете активировать ее при размытии или изменении любого элемента формы для ваших настраиваемых полей.

      • 0
    • Я реализовал это решение, и оно выглядит очень многообещающе, но есть одна проблема: что мне добавить в «submitHandler»? После проверки с помощью jquery.validate WordPress ничего не делает (сохранение кнопки остается в анимированном состоянии). Как передать ребенка обратно в WP?

      • 0
    • Если вы просто пытаетесь вернуть кнопку «Опубликовать» в нормальное состояние, когда обязательное поле пусто (или какая-либо другая проверка не удалась), вам не нужно ничего делать с submitHandler; просто отредактируйте код validate(), чтобы изменить кнопку при сбое проверки. Это работает: jQuery(«#post»).validate({ invalidHandler: function() { jQuery(‘#publish’).removeClass(‘button-primary-disabled’); jQuery(‘#ajax-loading’).css («видимость», «скрытый»); } });

      • 0
    • Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится.

      • 0
  2. Полный базовый код для добавления проверки jQuery:

    1. Поставьте в очередь сценарий проверки. Я предполагаю, что 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' );
      });
      
    2. В файле 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();
              }
          });
      });
      
    3. Сделанный 🙂

    • 0
  3. Я использовал этот код, очень полезный, просто изменился:

    $(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/

    • 0
  4. Я нашел этот подход для решения проблемы проверки полей метабокса с использованием кода PHP.

    https://tommcfarlin.com/post-meta-data-error-messages/

    Надеюсь, это поможет вам (работает для меня в аналогичном сценарии)

    • 0
  5. Если вы хотите иметь возможность проверять на стороне сервера, самый простой вариант — использовать расширенные настраиваемые поля для определения ваших настраиваемых макетов полей, а затем надстройку « Проверенное поле », чтобы установить проверку для каждого поля в панели администратора WordPress.

    • 0

Оставить ответ

You must login to add an answer.