Beschränken Sie den Zugriff auf den Post, wenn er gerade bearbeitet wird

Auf einer Plattform mit vielen Redakteuren ist das Problem, dass ich lese, dass zwei Redakteure den gleichen Beitrag gleichzeitig Korrektur lesen (und den Warnhinweis über jemand anderen ignorieren, der gerade den Beitrag bearbeitet).

Gibt es eine Lösung, bei der ich den Zugriff auf einen Post beschränken kann, wenn er gerade von einem anderen Benutzer bearbeitet wird? Vielleicht indem Sie den Bearbeitungslink des Beitrags auf der Beitragsliste deaktivieren? Dies sollte nur für Redakteure gelten, wenn sie nicht der Autor des Posts sind (wir wollen nicht, dass sie aus ihrem eigenen Beitrag ausgeschlossen werden) und Admins sollten von jeglicher Einschränkung ausgeschlossen werden.

Solutions Collecting From Web of "Beschränken Sie den Zugriff auf den Post, wenn er gerade bearbeitet wird"

Der Warnhinweis wird von der function wp_check_post_lock . Im Folgenden wird der Benutzer zurück zum Postlisting-Bildschirm geleitet, wenn jemand anders ihn bearbeitet.

 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(); } } 

Und um anzuzeigen, dass ein Beitrag gesperrt ist, dh von einem anderen Benutzer bearbeitet wird, kann den Zeilenaktionen ein kleines rotes Zeichen hinzugefügt werden.

gesperrter Beitrag

 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( '••• LOCKED %s •••', strtoupper( $post->post_type ) ); } return $actions; }