Pregunta

Ok, ha habido varias publicaciones aquí sobre formularios de publicación frontend. Los he leído todos, lo que me llevó a donde estoy. Ahora, cada forma que encuentro tiene alguna forma de validación que parece verificar un valor para los campos que desea hacer requeridos. Los he probado y no puedo hacer que nada funcione. Simplemente no puedo hacer ningún campo requerido. Todo lo demás sobre la forma es perfecto. Pero me encantaría hacer cumplir mis campos requeridos (bonificación para los mensajes de error apropiados).

He intentado mirar en Google, realmente no creo que JS sea lo que quiero usar para esto. Y cualquier otra validación de PHP, parece que tampoco puedo hacer trabajo. Estoy seguro de que los estoy incorporando mal de alguna manera.

Esto es lo que tengo: http://pastebin.com/rw4c6jzq (Se supone que las líneas de plantilla completa 9-19 son validación)

Mi script de procesamiento en la plantilla:

    <?php 
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "new_post") { 

    // Do some minor form validation to make sure there is content 
    if (isset ($_POST['title'])) { 
        $title =  $_POST['title']; 
    } else { 
        echo 'Please enter the wine name'; 
    } 
    if (isset ($_POST['description'])) { 
        $description = $_POST['description']; 
    } else { 
        echo 'Please enter some notes'; 
    } 

    $tags = $_POST['post_tags']; 
    $winerating = $_POST['winerating']; 

    // ADD THE FORM INPUT TO $new_post ARRAY 
    $new_post = array( 
    'post_title'    =>   $title, 
    'post_content'  =>   $description, 
    'post_category' =>   array($_POST['cat']),  // Usable for custom taxonomies too 
    'tags_input'    =>   array($tags), 
    'post_status'   =>   'publish',           // Choose: publish, preview, future, draft, etc. 
    'post_type' =>   'post',  //'post',page' or use a custom post type if you want to 
    'winerating'    =>   $winerating
    ); 

    //SAVE THE POST 
    $pid = wp_insert_post($new_post); 

             //KEEPS OUR COMMA SEPARATED TAGS AS INDIVIDUAL 
    wp_set_post_tags($pid, $_POST['post_tags']); 

    //REDIRECT TO THE NEW POST ON SAVE 
    $link = get_permalink( $pid ); 
    wp_redirect( $link ); 

    //ADD OUR CUSTOM FIELDS 
    add_post_meta($pid, 'rating', $winerating, true);  

    //INSERT OUR MEDIA ATTACHMENTS 
    if ($_FILES) { 
        foreach ($_FILES as $file => $array) { 
        $newupload = insert_attachment($file,$pid); 
        // $newupload returns the attachment id of the file that 
        // was just uploaded. Do whatever you want with that now. 
        } 

    } // END THE IF STATEMENT FOR FILES 

} // END THE IF STATEMENT THAT STARTED THE WHOLE FORM 

//POST THE POST YO 
do_action('wp_insert_post', 'wp_insert_post'); 

La forma y todo lo demás se puede ver en el pastebin para verlo todo en contexto. ¡Muchas gracias!

¿Fue útil?

Solución

La mejor manera de hacer la validación de formulario es con una combinación de JavaScript y PHP.

La razón por la que desea realizar la validación de JavaScript es dar a los usuarios la oportunidad de corregir sus errores sin enviar el formulario. Además, detendrá cualquier error informal. También querrá garantizar la validación en el back-end en caso de que JavaScript esté apagado.

De todas formas, desinfectante Sus datos deben ser parte de este proceso. Use cualquiera de estas funciones de WordPress para ayudarlo allí: Validación de datos.

Para la validación de JavaScript, recomiendo el complemento de validación jQuery. Es muy fácil de implementar y personalizar.

En cuanto a su validación de PHP, puede intentar agregar esto para verificar los valores vacíos: $_POST['title'] != ''

Otros consejos

Creo que la forma correcta a través de PHP son las funciones esc_attr* de WordPress y todas las funciones en este archivo: WP-Includes/Formatting.php

También use las posibilidades de PHP: filtro_var

Licenciado bajo: CC-BY-SA con atribución
scroll top