it-swarm-pt.tech

Validando valores personalizados da caixa Meta e campos obrigatórios

Algo que eu nunca vi coberto é a melhor maneira de validar que campos de formulário específicos são preenchidos corretamente para meta caixas de tipo de postagem personalizado.

Eu estou olhando para obter opiniões de especialistas sobre a melhor forma de validar campos personalizados para qualquer metaboxes que se possa criar. Meu interesse é:

  • garantir que a validação de campo ocorra antes que a publicação seja publicada/atualizada
  • utilizando uma classe/código que não entra em conflito com outros javascript wordpress
  • permite definir campos específicos conforme necessário, enquanto outros podem ser opcionais
  • validar campos com base em regras personalizáveis, incluindo regex para coisas como formato de e-mail
  • controlar a exibição visual de quaisquer erros/avisos

Desde já, obrigado!

15
NetConstructor.com

A maneira mais fácil é adicionar a validação Javascript através do plugin jQuery Validate . Aqui está o passo a passo mais básico:

Perto da sua chamada add_meta_box, coloque o plugin jQuery Validate, bem como um arquivo JS para o seu script simples:

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');
}

Em seguida, em my_script.js, inclua o seguinte:

jQuery().ready(function() {
    jQuery("#post").validate();
});

Isso permitirá a validação no formulário de postagem. Em seguida, no callback add_meta_box em que você define os campos personalizados, adicione uma classe "obrigatória" para cada campo que deseja validar, da seguinte forma:

<input type="text" name="my_custom_text_field" class="required"/>

Todos os campos com "obrigatório" em sua classe serão validados quando a postagem for salva/publicada/atualizada. Todas as outras opções de validação (regras, estilo de erro, etc) podem ser definidas na função document.ready em my_script.js; verifique o jQuery Valide docs para todas as opções.

20
danblaker

Eu usei este código, muito útil, apenas mudei:

$(form).find("input[type='submit']").click(function(e){

Para:

$(form).find("#publish").click(function(e){

Porque se você tiver outro formulário dentro do formulário principal, inicie o script.

E:

$(form).submit();

Para:

$(this).submit();

Porque a primeira linha apenas salva o post como rascunho e você não pode mais publicá-lo.

Escrito tudo aqui: http://allgraphics.it/blog/2012/10/jquery-validation-sui-campi-di-input-postcustom-post-di-wordpress/

2
Ricky

Eu encontrei esta abordagem para resolver o problema de validar campos metabox usando código PHP

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

Espero que isso ajude você (funciona para mim em um cenário semelhante)

2
Julio Garcés Teuber

O código básico completo para adicionar a validação do jQuery:

  1. Enfileire o script de validação. Eu suponho que o jQuery já esteja incluído.

    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. No arquivo js ou na tag de script:

    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. Feito :)

2
Ijas Ameenudeen

Se você quiser validar o lado do servidor, a opção mais fácil é usar Advanced Custom Fields para definir seus layouts de campo personalizados e depois o Validated Field add-on para definir sua validação por campo no campo. Admin do WordPress.

0
doublesharp