是否仅在编辑批准的情况下发布作者帖子?

时间:2014-10-20 作者:NewUser

我运行一个多作者博客,我正在寻找一个非插件解决方案。

Wordpress中的默认作者用户角色可以在没有任何批准的情况下发布帖子-查看Role Capabilities Wordpress Codex. 使用参与者角色来实现我的目标是不可能的,因为参与者角色无法上载图像。。。

是否可以将所有作者的帖子设置为“草稿”状态,以便只有编辑才能发布帖子?

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

将以下代码添加到函数中。php:

function allow_contributor_uploads() {
    $contributor = get_role(\'contributor\');
    $contributor->add_cap(\'upload_files\');
}
if ( current_user_can(\'contributor\') && !current_user_can(\'upload_files\') ) {
    add_action(\'admin_init\', \'allow_contributor_uploads\');
}
这将添加upload_files 贡献者角色的能力。只需运行一次;只需以参与者角色的用户身份登录admin即可。成功添加功能后,如果需要,可以删除(或注释掉)代码。

要删除upload_files 功能并将参与者角色返回为默认值,请使用以下选项:

function deny_contributor_uploads() {
    $contributor = get_role(\'contributor\');
    $contributor->remove_cap(\'upload_files\');
}
if ( current_user_can(\'contributor\') && current_user_can(\'upload_files\') ) {
    add_action(\'admin_init\', \'deny_contributor_uploads\');
}

Plugin Option

根据Kaiser提出的建议,这里有一个插件,它将创建一个新的用户角色,具有贡献者功能(编辑、删除和读取帖子),以及上传文件功能。

<?php
/**
 * Plugin Name: Add Contributor Plus Role
 * Description: Activate plugin to create a user role with Contributor capabilities, PLUS upload_files.
 * Plugin URI: http://wordpress.stackexchange.com/questions/165951/publish-author-posts-only-with-editor-approval/165957#165957
 * Version: 1.0
 */

add_action( \'wp_loaded\', \'add_new_contributor_plus_role\');
function add_new_contributor_plus_role() {
    add_role(
        \'contributor_plus\',
        __( \'Contributor Plus\' ),
        array(
            \'edit_posts\'   => true,
            \'delete_posts\' => true,
            \'read\'         => true,
            \'upload_files\' => true
        )
    );
}
?> 
将上述代码添加到/wp-content/plugins/add-contributor-plus-role/add-contributor-plus-role.php, 或者创建/add contributor plus角色/add contributor plus角色。php文件夹和本地文件,添加到zip文件,并使用插件>添加新内容>上载进行上载。您可以随意将用户角色的名称更改为您想要的任何名称。

激活插件,将添加角色。您可以停用插件,并将其删除;它不会影响新创建的用户角色。

如果您改变主意,希望删除“Contributor Plus”用户角色,请使用以下内容代替add\\u角色行(至;分号),并再次激活插件:

remove_role( \'contributor_plus\' );

结束

相关推荐

在加载plugins_后,get_plugins()不工作

知道为什么下面的代码function my_plugin_load() { get_plugins(); } add_action( \'plugins_loaded\', \'my_plugin_load\' ); 抛出此错误?Fatal error: 不应调用未定义的函数get\\u plugins()get_plugins() 定义在plugins_loaded 胡克开火了?如果不是,那么什么才是合适的钩子呢?(这个钩子应该启动插件的引导/加载过程)