Вопрос

Хорошо, здесь было несколько сообщений о формах публикации фронта. Я прочитал их все, что привело меня туда, где я нахожусь. Теперь каждая форма, с которой я сталкиваюсь, имеет какую -то форму проверки, которая, кажется, проверяет значение для требуемых поля. Я пробовал их, и я не могу заставить ничего работать. Я просто не могу сделать никаких обязательств. Все остальное в форме идеально. Но я хотел бы обеспечить соблюдение моих необходимых полей (бонус за соответствующие сообщения об ошибках).

Я пытался посмотреть на Google, я не думаю, что JS - это то, что я хочу использовать для этого. И любая другая проверка PHP, я не могу сделать работу. Я уверен, что как -то включаю их неправильно.

Вот что у меня есть: http://pastebin.com/rw4c6jzq (Полные линии шаблона 9-19 должны быть проверены)

Мой сценарий обработки в шаблоне:

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

Форма и все остальное можно увидеть в Pastebin, чтобы увидеть все это в контексте. Спасибо большое!

Это было полезно?

Решение

Лучший способ сделать проверку формы - это комбинация JavaScript и PHP.

Причина, по которой вы хотите выполнить проверку JavaScript, заключается в том, чтобы дать пользователям возможность исправить свои ошибки без отправки формы. Плюс, это остановит любые случайные ошибки. Вы также захотите обеспечить проверку на заднем плане в случае отключения JavaScript.

Так или иначе, дезинфекция Ваши данные должны быть частью этого процесса. Используйте любую из этих функций WordPress, чтобы помочь вам там: Проверка данных.

Для проверки JavaScript я рекомендую Плагин валидации jQuery. Анкет Это очень легко внедрить и настроить.

Что касается вашей проверки PHP, вы можете попробовать добавить это, чтобы проверить на наличие пустых значений: $_POST['title'] != ''

Другие советы

Я думаю, что правильным путем через PHP является функции ESC_ATTR* WordPress и все функции в этом файле: wp-includes/formatting.php

Также используйте возможности от PHP: filter_var

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top