Pregunta

Algo que nunca he visto cubierto es la mejor manera de validar que los campos de formulario específicos completados incorrectamente para cajas meta de tipo de envío personalizado.

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

  • garantizar la validación de campo se lleva a cabo antes de que el mensaje se publica / modificada
  • utilización de una clase / código que no entre en conflicto con otros wordpress javascript
  • le permite definir campos específicos según sea necesario, mientras que otros podrían ser opcionales
  • campos validar en base a reglas configurables, incluyendo expresiones regulares para cosas como el formato de correo electrónico
  • controlar la presentación visual de cualesquiera errores / avisos

Gracias de antemano!

¿Fue útil?

Solución

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

Cerca de su llamada add_meta_box, poner en cola el plugin jQuery Validar, así como un archivo JS para su escritura 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 incluyen los siguientes:

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

Esto permitirá la validación en el formulario de envío. Luego, en la devolución de llamada add_meta_box donde se definen los campos personalizados, deberá añadir una clase de "necesaria" para cada campo que desea validar, así:

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

Todos los campos marcados con "necesario" en su clase será validado cuando el puesto se guarda / Fecha de publicación / modificada. Todas las otras opciones de validación (reglas, estilo de error, etc.) se puede ajustar en la función document.ready en my_script.js; comprobar la documentación de jQuery Validar para todas las opciones.

Otros consejos

El código completo básico para añadir jQuery Validación:

  1. Enqueue el script de validación. Asumo jQuery ya está enqued.

    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 la etiqueta js o secuencia de comandos:

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

utiliza este código, muy útil, justa cambió:

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

Para:

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

Porque si tiene otra forma dentro de la forma principal de este comenzar la secuencia de comandos.

Y:

$(form).submit();

Para:

$(this).submit();

Porque la primera línea sólo se ahorra el puesto de tiro y no se puede publicar sin más.

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

He encontrado este enfoque para resolver el problema de los campos METABOX valide con código PHP

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

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

Si usted quiere ser capaz de lado del servidor validar la opción más sencilla es utilizar Avanzada campos personalizados para definir sus diseños de campo personalizados, y luego el Validado campo complemento para establecer su validación por campo en la administración de WordPress.

scroll top