Domanda

OK, ci sono stati diversi posti su qui circa le forme frontend pubblicazione. Ho letto tutti loro, che mi ha fatto dove sono. Ora ogni forma mi imbatto ha una qualche forma di validazione che sembra verificare la presenza di un valore per i campi che si desidera rendere necessaria. Li ho provato, e non riesco a ottenere nulla al lavoro. Non riesco a fare tutti i campi richiesti. Tutto il resto la forma è perfetta. Ma mi piacerebbe far valere i miei campi obbligatori (bonus per i messaggi di errore appropriati).

Ho provato a guardare in giro su google, io in realtà non credo che JS è quello che voglio da utilizzare per questo. E qualsiasi altra convalida PHP non riesco a far funzionare neanche. Sono sicuro che li sto incorporando sbagliato in qualche modo.

Ecco quello che ho: http://pastebin.com/rw4c6jZQ (linee piena template 9-19 sono dovrebbe essere la validazione)

Il mio script di elaborazione presso il al del modello:

    <?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 e tutto il resto può essere visto in pastebin per vedere tutto in contesto. Grazie mille!

È stato utile?

Soluzione

Il modo migliore per farlo è validazione dei form con una combinazione di JavaScript e PHP.

Il motivo per cui si desidera eseguire la convalida JavaScript è quello di dare agli utenti la possibilità di correggere i loro errori senza inviare il modulo. Inoltre, si fermerà eventuali errori casuali. Si vuole anche per garantire la convalida sul back-end nel caso in cui sia spento JavaScript.

In entrambi i casi, sanificazione i tuoi dati dovrebbe essere parte di questo processo. Utilizzare qualsiasi di queste funzioni di WordPress per aiutarvi lì:. Data Validation

Per la convalida JavaScript, vi consiglio il jQuery convalida plug . E 'super facile da implementare e personalizzare.

Per quanto riguarda il tuo convalida PHP, si può provare ad aggiungere questo per verificare la presenza di valori vuoti: $_POST['title'] != ''

Altri suggerimenti

credo, il modo giusto tramite PHP è l'esc_attr * funzioni di WordPress e tutte le funzioni in questo file: wp-includes / formatt ing.php

Anche utilizzare le possibilità da PHP: filter_var

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top