0

我有一个奇怪的问题,假设我在 wordpress 的后端创建了一个名为“Favorite Foods”的新部分,其中包含“Location”、“Food”、“Verified”字段。注册到我网站的人将成为编辑,而不是成为定向到后端被重定向到一个页面,其中填写的信息与标记为“Favorite Foods”的部分相同的信息,但“已验证”布尔项除外。这些编辑器能否从我创建的那些页面中填写此信息并填充该部分在 wordpress 中?如果是这样,批准/拒绝他们应该只是一个是/否编辑。但如果可能的话,有人可以指出我在将表单链接到 wordpress 部分方面的帮助方向。

谢谢你。

4

2 回答 2

2

一年多前我做过类似的事情,用户可以将他们的公司发布为新的 WordPress 项目。我这样做的方式是这样的:

  • 为用户创建一个编辑页面以填写有关项目的信息,例如使用页面模板
  • 在您functions.php创建一个运行的函数中,如果发送任何帖子数据
  • 使用wp_insert_post()创建一个新项目,最好作为您的自定义帖子类型
  • 将帖子插入为pending,以便新帖子不会立即发布

这样,您可以从后端批准新帖子。此外,您的用户不需要具有“编辑”状态/用户角色(您不想这样做!!)。

让用户访问后端是一个非常微妙的话题。请务必阅读关于nonce的内容并实施类似验证码的内容,以提供基本的安全性并避免垃圾邮件。

于 2012-11-13T21:17:41.013 回答
0

我使用前端编辑器做了一个项目。正如@martinczerwi 所说,您必须维护访问权限(角色管理)。

这是我的代码示例,请从 id 获取想法,我想您了解编码

if(isset($_POST['submitted']) && isset($_POST['post_nonce_field']) && wp_verify_nonce($_POST['post_nonce_field'], 'post_nonce')) {
    $cpostStatus = 'draft';
    if(isset($_POST['proStatus'])){
        $cpostStatus = trim($_POST['proStatus']);
    }
    if(trim($_POST['projectName']) == '') {
        $projectNameError = 'Please enter a Project Name.';
        $hasError = true;
    } else {
        $projectName = trim($_POST['projectName']);
    }




    if(!$hasError){
        $post_information = array(
        'post_title' => esc_attr(strip_tags($_POST['projectName'])),
        'post_content' => esc_attr(strip_tags($_POST['projectDescription'])),
        'post-type' => 'post',
        'post_status' => $cpostStatus
        );

        **$post_id = wp_insert_post($post_information);**

        if($post_id)
        {

            // Update Custom Meta - your custom data
            update_post_meta($post_id, 'citerp_start_date', esc_attr(strip_tags($_POST['startDate'])));

            // Redirect
            wp_redirect( home_url('/projects') ); exit;
        }

    }

}

与插入使用更新部分相同

$post_information = array(
        'ID' => $current_post,
        'post_title' => esc_attr(strip_tags($_POST['projectName'])),
        'post_content' => esc_attr(strip_tags($_POST['projectDescription'])),
        'post-type' => 'post',
        'post_status' => $cpostStatus
    );

    $post_id = wp_update_post($post_information);
于 2017-02-28T10:26:32.357 回答