如果帖子当前正在编辑,则限制对帖子的访问

时间:2013-04-13 作者:Christine Cooper

在一个有许多编辑的平台上,我遇到的问题是,两位编辑同时校对同一篇文章(并且无视关于其他人正在编辑该文章的警告通知)。

如果帖子当前正由其他用户编辑,是否有一种解决方案可以限制对该帖子的访问?也许可以通过在帖子列表上禁用帖子的编辑链接?这应该只对不是文章作者的编辑生效(我们不希望他们被锁定在自己的文章之外),管理员应该被排除在任何限制之外。

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

警告通知由函数发出wp_check_post_lock. 如果其他人正在编辑,下面会将用户重定向回post listing屏幕。

add_action( \'load-post.php\', \'redirect_locked_post_wpse_95718\' );

function redirect_locked_post_wpse_95718()
{
    if( isset($_GET[\'post\'] ) && wp_check_post_lock( $_GET[\'post\'] ) )
    {
        global $typenow;
        $goto = ( \'post\' == $typenow ) ? \'\' : "?post_type=$typenow";
        wp_redirect( admin_url( "edit.php$goto" ) );
        exit();
    }
}
并且为了指示帖子被锁定,即被其他用户编辑,可以在行操作中添加一个小的红色标志。

locked post

foreach( array( \'post\', \'page\' ) as $hook )
    add_filter( "{$hook}_row_actions", \'locked_post_notice_wpse_95718\', 10, 2 );

function locked_post_notice_wpse_95718( $actions, $post ) 
{
    if( wp_check_post_lock( $post->ID ) )
    {
        $actions[\'locked\'] = sprintf(
            \'<span style="color:#f00;font-weight:bolder;">&#149;&#149;&#149; LOCKED %s &#149;&#149;&#149;</span>\',
            strtoupper( $post->post_type )
        );
    }
    return $actions; 
}

结束

相关推荐

PHP动态条件开机自检显示

我试图让WordPress循环只显示帖子的ID,该ID反映了$category_name 等于,如下面的代码行所示。它最终显示的是所有内容,而不是指定的帖子。<?php $link=$_GET[\'link\']; if ($link == \'1\') { $category_name= \'accomodatins\'; } if ($link == \'2\'){ $category_name= \'accomodati