If you need to change the template used, you can use the template_include
filter (change “itermediate-template.php” and “page.php” with correct file names of your template files):
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;
}
If you need to redirect the user to another page you can use template_redirect
filter:
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();
}
}