在WordPress中保存前端表单数据

时间:2012-06-28 作者:Solomon Henry

我有这样的前端用户表单,

现在,当用户填写表单并从前端点击发布按钮时,图像上载下拉类别将显示标题。。。。。在后端,将创建一篇包含标题和所有详细信息的帖子,我可以创建一篇包含帖子标题和描述的帖子,但我无法保存类别标记。以及如何向列中添加类别和标记

enter image description here

对于图像上传,我搜索了解决方案,但没有任何帮助,代码是

<form id="new_post"<?php do_action(\'post_edit_form_tag\'); ?> name="new_post" method="post" action="">

                    <!-- post name -->
                    <p><label for="title">Title</label><br />
                    <input type="text" id="title" value="" tabindex="1" size="20" name="title" />
                    </p>

                    <!-- post Category -->
                    <p><label for="Category">Parent:</label><br />
                    <?php 
                        wp_dropdown_categories(\'type=product&show_count=0&selected=-1&hierarchical=1&depth=1&hide_empty=0&exclude=0&show_option_none=Select Gender&name=main_prod&taxonomy=product_cat\');
                    ?>
                    </p>
                    <!-- Image Upload -->
                    <p><label for="description">Image Upload</label><br />
                    <input type="file" name="file" id="file" /> 
                    <br />

                    <!-- post Content -->
                    <p><label for="description">Content</label><br />
                    <textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
                    </p>

                    <!-- post tags -->
                    <p><label for="post_tags">Tags:</label></br>
                    <input type="text" value="" tabindex="5" size="16" name="post_tags" id="post_tags" /></p>
                    <p align="right"><input type="submit" value="Publish" tabindex="6" id="submit" name="submit" /></p>

                    <input type="hidden" name="action" value="new_post" />
                    <?php wp_nonce_field( \'new-post\' ); ?>
                    </form>
                </div>

                <?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 a  title\';
                        }
                        if (isset ($_POST[\'description\'])) {
                            $description = $_POST[\'description\'];
                        } else {
                            echo \'Please enter the content\';
                        }
                        $tags = $_POST[\'post_tags\'];

                        // Add the content of the form to $post as an 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\' => \'product\'  //\'post\',page\' or use a custom post type if you want to
                        ); 
                        //save the new post
                        $pid = wp_insert_post($new_post);
                        //insert taxonomies
                    }
在函数中。php

///////////////////////////文件上传功能///////////////////////

add_action( \'post_edit_form_tag\' , \'post_edit_form_tag\' );

function post_edit_form_tag( ) {
    echo \' enctype="multipart/form-data"\';
}
我不想使用任何插件,任何想法

2 个回复
SO网友:Adam

另外,您如何处理图像上载?该函数仅设置enctype。

通过在通话下方添加以下内容wp_insert_post 您将能够处理图像上载,

if (!function_exists(\'wp_generate_attachment_metadata\')){
    require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
    require_once(ABSPATH . "wp-admin" . \'/includes/file.php\');
    require_once(ABSPATH . "wp-admin" . \'/includes/media.php\');
}
     if ($_FILES) {
        foreach ($_FILES as $file => $array) {
            if ($_FILES[$file][\'error\'] !== UPLOAD_ERR_OK) {
                return "upload error : " . $_FILES[$file][\'error\'];
            }
            $attach_id = media_handle_upload( $file, $pid );
            add_post_meta($pid, \'meta_key_to_attach_image_to\', $attach_id, false);
            continue;

        if ($attach_id > 0){
            //and if you want to set that image as Post  then use:
            update_post_meta($pid,\'_thumbnail_id\',$attach_id);

        }
    }
}

SO网友:Pontus Abrahamsson

保存新帖子后添加:

//Set the object terms after when we have the ID
wp_set_post_terms( $new_post, $tags, \'post_tag\' );
这将保存您的标签。

结束

相关推荐

edit posts through front-end

用户可以通过使用诸如重力表单之类的插件或使用wp\\u insert\\u post通过前端插入帖子。然而,如何处理这些帖子的编辑?这对用户来说必须是安全的/万无一失的/安全的。