Beschränken Sie den Zugriff auf einen Post, sobald er als gegebener Status markiert ist

Ich versuche, jeden Beitrag, der mit einem bestimmten Status versehen und gespeichert wurde, von Bearbeitern nicht editierbar zu machen.

Ich benutze ein benutzerdefiniertes Plugin, das den Status erweitert, um Subbing einzuschließen, aber momentan versuche ich nur, die functionalität dort zu bekommen, also benutze den Veröffentlichungsstatus.

Kann jemand sehen, was mit meinem Code unten falsch ist?

Soweit ich das beurteilen kann, verweise ich publish Status und editor Benutzer auf Variablen, überprüfe, ob diese richtig sind und entferne dann die Bearbeitungsfunktionen und hakte dann ein, bevor der Post veröffentlicht wird.

 // Restrict editors making changes to articles after tagged published function restrict($new_status, $post){ $pub = get_post_status($post) == 'publish'; $editor = get_role('editor'); if ($new_status == $pub && (current_user_can('edit_post'))){ remove_cap($editor, 'edit_posts'); } } add_action('publish_post', 'restrict', 10, 2); 

Solutions Collecting From Web of "Beschränken Sie den Zugriff auf einen Post, sobald er als gegebener Status markiert ist"

Entfernen Sie nicht die Fähigkeit – dadurch können alle Editoren nicht alle Beiträge bearbeiten. Verwenden Sie stattdessen einen Filter, um zu bestimmen, ob der Beitrag bearbeitet werden kann:

 function wpse_187738_map_meta_cap( $caps, $cap, $user_ID, $args ) { if ( $cap === 'edit_post' && $args && ! current_user_can( 'manage_options' ) /** Only proceed for non-administrators */ ) { $post_id = $args[0]; if ( has_tag( 'tag_slug_or_id', $post_id ) ) $caps[] = 'not_allowed'; } return $caps; } add_filter( 'map_meta_cap', 'wpse_187738_map_meta_cap', 10, 4 );