好的,这里有几篇关于前端发布表格的文章。我已经阅读了所有内容,这使我进入了我的位置。现在,我遇到的每种表格都有某种形式的验证,似乎可以检查要制作所需的字段的值。我已经尝试了它们,我无法工作。我只是无法制作任何需要的字段。关于该表格的其他所有内容都是完美的。但是我很想执行我所需的字段(适当的错误消息的奖励)。

我已经尝试在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'); 

形式和其他所有内容都可以在粘贴中看到,以在上下文中看到所有内容。非常感谢!

有帮助吗?

解决方案

进行形成验证的最好方法是结合JavaScript和PHP。

您要执行JavaScript验证的原因是为用户提供了一个在不提交表格的情况下纠正错误的机会。另外,它将阻止任何休闲错误。如果关闭JavaScript,您还需要确保对后端的验证。

无论哪种方式, 消毒 您的数据应该是此过程的一部分。使用这些WordPress功能中的任何一个来帮助您: 数据验证.

对于JavaScript验证,我建议 jQuery验证插件. 。实现和自定义非常容易。

至于您的PHP验证,您可以尝试添加它以检查空值: $_POST['title'] != ''

其他提示

我认为,通过PHP的正确方法是WordPress的ESC_ATTR*函数,并且在此文件中所有功能: WP-包括/formatting.php

还使用PHP的可能性: filter_var

许可以下: CC-BY-SA归因
scroll top