Kann ich bestimmte Seitenvorlagen für eine bestimmte Rolle ausschließen?

Nehmen wir an, ich habe beim Erstellen einer Seite zwei Arten von Vorlagen zur Verfügung. “Standardvorlage” und “Zwischenvorlage”.

Ich habe eine Rolle namens “Editor”, und ich möchte nicht, dass der Editor auf die “Zwischenvorlage” zugreift.

Ist das möglich (mit einem Haken)?

Solutions Collecting From Web of "Kann ich bestimmte Seitenvorlagen für eine bestimmte Rolle ausschließen?"

Wenn Sie die verwendete Vorlage ändern müssen, können Sie den template_include Filter verwenden (ändern Sie “itermediate-template.php” und “page.php” mit korrekten Dateinamen Ihrer Vorlagendateien):

 add_filter( 'template_include', 'cyb_exclude_template_for_editors', 99 ); function cyb_exclude_template_for_editors( $template ) { $user = wp_get_current_user(); if( in_array( "editor", (array) $user->roles ) && is_page_template( "itermediate-template.php" ) ) { $new_template = locate_template( array( 'page.php' ) ); if ( '' != $new_template ) { return $new_template ; } } return $template; } 

Wenn Sie den Benutzer auf eine andere Seite redirect müssen, können Sie den Filter template_redirect :

 add_action( 'template_redirect', 'cyb_redirect_editors_from_page_template' ); function cyb_redirect_editors_from_page_template() { $user = wp_get_current_user(); if( in_array( "editor", (array) $user->roles ) && is_page_template( "itermediate-template.php" ) ) { //Redirect to home, change to fit your needs wp_redirect( home_url() ); exit(); } }