允许非作者查看帖子的修订版本

时间:2017-06-08 作者:AFA Med

我在我的网站上有一个特定的创作工作流。

作者发布新帖子,然后生成另一种语言的自动版本并分配给另一个用户(译者)。

我希望这个翻译人员能够看到修订,我的意思是当他请求页面/wp admin/修订时。php?revision=450他必须查看更改历史,就好像他是文件的所有者一样,但翻译人员不能编辑原始帖子(以默认语言编写)。

我在管理/修订方面有点急功近利。php文件,但我认为一定有更好的替代方案。

1 个回复
SO网友:Frank P. Walentynowicz

基本解决方案

让我们创建新角色翻译人员,其功能与作者角色的功能相匹配。将下面的代码插入到functions.php 当前主题:

function wpse_add_translator_role() {
    if ( empty( get_role( \'translator\' ) ) ) { 
        $role = get_role( \'author\' );
        add_role( \'translator\', \'Translator\', $role->capabilities );
    }
}
add_action( \'init\', \'wpse_add_translator_role\', 10 );
创建角色转换器后,可以从函数中删除上述代码。php,或只是注释掉add_action 生产线:

// add_action( \'init\', \'wpse_add_translator_role\', 10 );
模板修改查找用于显示单个帖子的模板。紧接着the_content(); 标记在下面插入代码:

$user = wp_get_current_user();
if( 0 != $user->ID ) {
    if( in_array( \'translator\', $user->roles ) ) {
        global $post;
        $revisions = wp_get_post_revisions( $post->ID );
        if( !empty( $revisions ) ) {
            echo \'<div id="revisions" style="clear:both"><h3>Revisions</h3>\';
            foreach ( $revisions as $revision ) { 
                echo \'ID = \'; echo $revision->ID; ?>
                <textarea rows="10"><?php echo addslashes( $revision->post_content ) ?></textarea><?php
            }
            echo \'</div>\';
        }
    }   
}
准备翻译人员编辑每位翻译人员用户,并将其角色更改为翻译人员。

测试以翻译身份登录并选择一篇文章。您应该看到它的内容和所有可用的修订。

最后的注释

插入模板的代码可以进一步修改,以便仅为其他作者的帖子显示修订。这部分很简单,因此,我将由您决定。

重要的是要记住,上面提到的所有更改都应该应用于子主题,而不是原始主题。

结束

相关推荐

How to delete post revisions?

我没有设置修订数量的限制,这使得我的一些帖子有20多个修订,那么如何删除这些修订呢?顺便说一下,我正在使用WPMU,并且有很多博客,那么如何删除我所有博客的WordPress修订版呢?