Validación de valores personalizados de meta caja y campos obligatorios

14

Algo que nunca he visto cubierto es la mejor manera de validar que los campos de formulario específicos se completen correctamente para los meta box personalizados.

Estoy buscando obtener opiniones de expertos sobre la mejor manera de validar los campos personalizados para cualquier metabox que pueda crear. Mi interés es:

  • asegúrese de que la validación del campo se realice antes de que se publique / actualice la publicación
  • utilizando una clase / código que no esté en conflicto con otro javascript de wordpress
  • le permite definir campos específicos según sea necesario, mientras que otros podrían ser opcionales
  • valide los campos basándose en reglas personalizables que incluyen expresiones regulares para cosas como el formato de correo electrónico
  • controlar la visualización de errores / avisos

Gracias de antemano!

    
pregunta NetConstructor.com 12.09.2010 - 18:48

5 respuestas

20

La forma más sencilla es agregar la validación de Javascript a través del jQuery Validate plugin . Aquí está el tutorial más básico:

Cerca de su llamada a add_meta_box, ponga en cola el complemento de Validación de jQuery y un archivo JS para su script simple:

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

Luego, en my_script.js, incluya lo siguiente:

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

Esto permitirá la validación en el formulario de publicación. Luego, en la devolución de llamada add_meta_box donde define los campos personalizados, agregaría una clase "requerida" para cada campo que desee validar, de este modo:

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

Todos los campos con "obligatorio" en su clase se validarán cuando la publicación se guarde / publique / actualice. Todas las demás opciones de validación (reglas, estilo de error, etc.) se pueden configurar en la función document.ready en my_script.js; Verifique la documentación de jQuery Validate para ver todas las opciones.

    
respondido por el danblaker 28.09.2010 - 00:13
2

El código básico completo para agregar la validación de jQuery:

  1. Encolar el script de validación. Supongo que jQuery ya está encolado.

    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. En el archivo js o etiqueta 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. Hecho :)

respondido por el Ijas Ameenudeen 15.05.2012 - 19:50
2

Utilicé este código, muy útil, justa cambiado:

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

Para:

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

'Porque si tiene otro formulario dentro del formulario principal, inicie el script.

Y:

$(form).submit();

Para:

$(this).submit();

'Porque la primera línea solo guarda la publicación como borrador y no puedes publicarla más.

Escrito todo aquí: enlace

    
respondido por el Ricky 20.11.2012 - 11:46
2

Encontré este enfoque para resolver el problema de validar campos metabox usando código PHP

enlace

Espero que esto te ayude (funciona para mí en un escenario similar)

    
respondido por el Julio Garcés Teuber 09.06.2016 - 19:28
0

Si desea poder validar el lado del servidor, la opción más sencilla es utilizar Campos personalizados avanzados para defina sus diseños de campo personalizados, y luego el complemento Validated Field para establecer su validación por campo en El administrador de WordPress.

    
respondido por el doublesharp 24.06.2015 - 00:47

Lea otras preguntas en las etiquetas