Validando valores personalizados da caixa Meta & campos obrigatórios

14

Algo que eu nunca vi ser abordado é a melhor maneira de validar que campos de formulário específicos sejam preenchidos corretamente para caixas meta de tipos de postagem personalizados.

Estou procurando obter opiniões de especialistas sobre a melhor forma de validar campos personalizados para qualquer metabox que possa ser criado. Meu interesse é:

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

Obrigado antecipadamente!

    
por NetConstructor.com 12.09.2010 / 18:48

5 respostas

20

A maneira mais fácil é adicionar a validação Javascript através do plug-in Validar jQuery . 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 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, assim:

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

Todos os campos com "obrigatório" em sua turma 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.

    
por danblaker 28.09.2010 / 00:13
2

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á está 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. Concluído:)

por Ijas Ameenudeen 15.05.2012 / 19:50
2

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 a postagem como rascunho e você não pode mais publicá-la.

Escrito tudo aqui: enlace

    
por Ricky 20.11.2012 / 11:46
2

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

enlace

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

    
por Julio Garcés Teuber 09.06.2016 / 19:28
0

Se você quiser validar o lado do servidor, a opção mais fácil é usar Campos personalizados avançados para defina seus layouts de campo personalizados e, em seguida, o complemento Campo validado para definir sua validação por campo em o administrador do WordPress.

    
por doublesharp 24.06.2015 / 00:47