没有后端的Wordpress编辑器

时间:2012-11-13 19:22:56

标签: wordpress

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

谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分: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);