根据条件通过前端帖子提交设置帖子作者

时间:2013-12-14 09:21:16

标签: php wordpress

我使用wordpress cms,我允许用户从前端发帖。有三种用户。我自己作为管理员,一个大三学生(作为一个作者的角色)和任何来自公众的非登录用户。目前,如果来自前端的任何未登录用户帖子,我将被指定为具有此代码的作者。目前我的wp_insert_post数组看起来像这样:

'post_title'    => $final_title,
'post_content'  => $about_stuff,
'post_status'   => 'draft',
'post_author'   => '20',
'post_type' => 'post',
 etc....

其中我的作者身份是'20'。这一切都很好。现在,我想要实现的是当我的初级登录并在前端创建帖子时,我希望他成为帖子的作者,而不是我(如目前所设置的)。我知道post_author需要是一个变量示例$content_creator。下面给出的是我迄今为止编写的代码,但我很困惑如何将它组合在一起以实现我所需要的。具体而言,我很困惑如何使变量$ content_creator与其余代码一起使用。

if ( is_user_logged_in() ) {
    $current_user = wp_get_current_user();
    if ( 19 == $current_user->ID ) {
    'post_author' => '19';
    } else {
    'post_author' => '20',
    }
 } 

代码非常明确且基本,用于检查用户是否登录,如果是,请检查用户ID。如果用户id等于19 set 'post_author' => '19'(我的初级用户ID),则将作者设置为admin。我想问两件事,在我的代码之前我还需要全局$ post,我应该使用另一个过滤器wp_update_post。请帮忙。

最终场景必须是,当管理员或其他任何人创建帖子时,后期作者必须设置为admin(我),但是当我的初级创建帖子时,他必须被设置为后期作者。如果我们在后端创建帖子,但由于某些原因我们更喜欢在前端创建帖子,那么这是不必要的。

1 个答案:

答案 0 :(得分:0)

事实证明,使用wp_update_post非常简单。虽然,现在它工作正常。如果你发现有趣的话,请告诉我。这是我在wp_insert_post之后使用的代码,并且没有对数组进行任何更改。

if ( is_user_logged_in() ) {
    $current_user = wp_get_current_user();
    if ( 19 == $current_user->ID ) {

    $update_creator = array(
                'ID'          => $pid, //created post ID
                'post_author' => '19'
            );

    wp_update_post( $update_creator );
    }
}