如何允许用户将他们的帖子(广告)作为草稿,然后在不需要批准的情况下再次发布?

时间:2011-08-08 作者:Andrew

我使用WordPress作为目录站点,用户可以在其中提交帖子,这将成为他们的广告/列表。用户被分配了一个自定义wordpress角色。

帖子需要得到管理员的批准和发布一次,然后他们可以根据自己的喜好自由更新帖子。目前这样还可以,因为我没有给自定义角色任何发布功能。

然而,我还需要用户能够随时将其帖子脱机(可能是草稿)临时发布,并随时将其再次发布。目前,当他们把帖子做成“草稿”时,他们需要将其提交审查,以便再次发布——这并不理想。

有没有办法让他们从publisheddraft, 然后又从draftpublished, 无需批准?

或者我给他们发布功能作为开始,但有一个插件需要他们的第一篇文章得到批准?(无论如何,他们只允许1个职位)。

一个带有复选框的自定义元框如何控制帖子是否发布?不幸的是,我不知道从哪里开始使用这种if功能。不过,我正在将WPALchemy用于其他代谢箱。

2 个回复
最合适的回答,由SO网友:Andrew 整理而成

多亏了Chris的建议,我在飞行中分配了一个功能,我才能够让一些东西工作起来,可能会帮助其他人。也许有更好的方法,但这个方法对我的情况很有效。

因为我正在使用自定义的帖子类型listing 我需要分配映射的功能publish_listings 提交给用户,但仅在他们获得批准后。我能想到的最好的方法是在自定义帖子屏幕上包含一个只有管理员才能看到的“管理员专用”元框。这是在WPAlchemy 而且是output_filter.

对于现在只有管理员才能看到的元盒,我添加了一个简单的复选框。选中此选项并更新帖子后,会添加publish_listings 当前帖子作者的能力。作为一种目录网站,在我的情况下,我只允许每个作者发表一篇文章,所以这很有效。如果未选中并更新,则会删除该功能。因此,用例如下所示:

用户提交帖子供审批,管理员审核帖子,勾选复选框,并首次发布帖子,用户现在可以随意更新帖子,包括将其制作成草稿并再次发布save_filter 更新帖子时添加功能。

function save_admin_only( $meta, $post_id ) {
global $post;

//get the author ID of the post we\'re on
$author_id = $post->post_author;
$id = get_the_author_meta( \'ID\' , $author_id );
$user = new WP_User( $id ); //retrieves the user, based on their ID specified above for user with WP_User class

    if($meta[\'_can_publish\'] == \'yes\') {    
        $user->add_cap( \'publish_listings\' ); //assign capability to this user if checkbox is ticked
    }
    else { $user->remove_cap( \'publish_listings\' ); } //otherwise remove the capability so they can not publish

return $meta;
}
如果需要检查自定义帖子类型(假设您有多个帖子类型),可以使用以下内容将其包装:

if ( \'other_post_type\' == get_post_type() ) {
    ...
}
这看起来对其他不想创建全新角色的场景非常有用,只是为了给用户一些功能。如果有人能在以上方面有所改进,那么请这样做。

SO网友:Chris Carson

我最近正在处理完全相同的问题。我没有解决这个问题,我们决定,因为人们必须为他们的物品支付相对较大的费用,所以他们会有足够的动力不发布不好的东西。此外,手动批准每一项都会很痛苦——人们不喜欢等待一天才能得到结果。

所以我们directory_member 用户级别publish_postsedit_published_posts 从一开始就具备能力。他们必须在帖子发布之前完成支付流程;一旦他们付了钱,他们就可以用他们的职位做任何他们想做的事情。

但我有一个脑电波(罕见)看着你的问题。我想我错的地方只有一个directory_member 级别,而不是directory_memberdirectory_member_approved. 后者将拥有edit_published_posts 能力;前者不会。当管理员第一次发布帖子时,让用户兴奋起来是相对简单的。

另一种可能性是分配edit_published_posts 基于用户元字段的动态功能,在admin_init 或者别的什么地方。但不知何故,我怀疑有两个显式层次的想法更好。

让我知道你最后会做什么。

结束

相关推荐

PUBLISH_POST的添加操作不起作用

我正在开发一个个人投票插件,我不打算公开发布它,因为我还在学习WP。一般来说,你可以投票给帖子“向上”或“向下”。我有两个表,一个收集IP(不允许多次投票),另一个名为“post\\u votes”的表收集每个帖子的投票数。当我发布一篇新帖子时,它的ID存储在“post\\u votes”中,我可以在人们投票时更新每个帖子的“up”、“down”。这在几天前奏效了。我做了一些修改,但我不明白为什么它不再工作了。。这是目前为止的全部代码。。我仍然需要实施一些安全预防措施。<?php /*&#x