如何使用前端帖子提交表单附加文件?

时间:2015-07-20 03:11:42

标签: php wordpress plugins wordpress-plugin

我正在尝试为WordPress创建一个分配上传器,我希望登录的用户能够通过前端的表单提交数据并让它在后端创建一个帖子。我已经能够创建一个短代码功能,允许管理员选择他们希望这个表单出现的位置,当表单提交时,它确实在后端创建了一个帖子。问题是,我希望登录用户能够将文件附加到帖子,以便管理员可以从后端下载文件。

以下是表格的简码:

add_shortcode('assignmentForm','wprmAssignmentForm');
function wprmAssignmentForm() { 

if (is_user_logged_in()){ ?>
    <form id="custom-post-type" name="custom-post-type" method="post" action="">
        <p>
        <label for="title">Assignment Title</label><br />
        <input type="text" id="title" value="" tabindex="1" size="20" name="title" />
        </p>

        <p>
        <label for="description">Assignment Content</label><br />
        <?php //wp_editor( '', 'description', array( 'media_buttons' => false, 'textarea_rows'=>5 ) ); ?>
        <textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
        </p>

        <p>
        <label for="upload">Upload File</label><br />
        <input type="file" name="upload" id="upload">
        </p>

        <p align="right"><input type="submit" value="Publish" tabindex="6" id="submit" name="submit" /></p>

        <input type="hidden" name="post-type" id="post-type" value="custom_posts" />
        <input type="hidden" name="action" value="custom_posts" />

        <?php wp_nonce_field( 'name_of_my_action','name_of_nonce_field' ); ?>

    </form>

    <?php

    if($_POST){
        wprmSaveSubmission();
    }

}
else {
    echo '<p>You must be logged in to submit an assignment!</p>';
}

}

以下是保存功能:

function wprmSaveSubmission() {

if ( empty($_POST) || !wp_verify_nonce($_POST['name_of_nonce_field'],'name_of_my_action') ) {
    exit;
}
else {

    // Basic validation
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } 
    else {
        echo 'Please enter a title';
        exit;
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    }
    else {
        echo 'Please enter the content';
        exit;
    }

    // Add the content of the form to $post as an array
    $post = array(
    'post_title' => wp_strip_all_tags( $title ),
    'post_content' => $description,
    'post_status' => 'publish',            
    'post_type' => 'wprm-assignments'  
    );
    wp_insert_post($post);  

}

}

我在表单中有文件上传器字段,但我不知道如何将上传保存在某处,然后在后端使用帖子下载。关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:0)

Wordpress提供预定义的功能,将媒体上传到网站。在自定义代码中使用这些功能,您可以将任何wordpress支持的文件作为附件上载到媒体中。

以下link可以帮助您了解如何在代码中使用这些功能的更多详细信息。

试试这个并告诉我这是否可以解决您的问题。