remover / ocultar páginas do backend dos usuários

Estou usando este código em functions.php para ocultar / remover algumas páginas de backend de usuários personalizados e funciona bem, mas como posso chegar a esconder as subpáginas também?

add_filter( 'parse_query' , 'exclude_pages_from_admin' ); function exclude_pages_from_admin($query) { global $pagenow,$post_type; if (is_admin() && $pagenow == 'edit.php' && $post_type == 'page' && current_user_can( 'custom_role' )) { $query->query_vars['post__not_in'] = array('1','2','3'); } } 

Solutions Collecting From Web of "remover / ocultar páginas do backend dos usuários"

Uma maneira de conseguir isso é através do looping das páginas pai e da busca de suas respectivas ids de páginas infantis.

As matrizes resultantes podem então ser mescladas e usadas na variável 'post__not_in' .

 add_filter( 'parse_query' , 'exclude_pages_from_admin' ); function exclude_pages_from_admin( $query ) { global $pagenow,$post_type; $pages = array('1','2','3'); foreach ( $pages as $parent_page ) { $args = array( 'post_type' => 'page', 'post_parent' => $parent_page, 'fields' => 'ids', ); $children = new WP_Query( $args ); $pages = array_merge( $pages, $children ); } if ( is_admin() && $pagenow == 'edit.php' && $post_type == 'page' && current_user_can('custom_role') ) { $query->query_vars['post__not_in'] = $pages; } } 

Editar: Desculpe, acho que consegui o fim errado da vara sobre esta questão! Este método é para remover a página do menu.

Eu acho que um método mais simples pode ser:

 add_action( 'admin_init', 'my_remove_menu_pages' ); function my_remove_menu_pages() { global $user_ID; if ( current_user_can( 'author' ) ) { remove_menu_page( 'edit.php' ); // Posts remove_menu_page('upload.php'); // Media remove_menu_page('edit-comments.php'); // Comments remove_menu_page('tools.php'); // Tools remove_menu_page( 'wpcf7' ); // Contact Form 7 remove_menu_page('acf-options'); //acf options } if ( current_user_can( 'editor' ) ) { remove_menu_page('upload.php'); // Media remove_menu_page('edit-comments.php'); // Comments remove_menu_page('tools.php'); // Tools remove_menu_page( 'wpcf7' ); // Contact Form 7 remove_menu_page( 'edit.php?post_type=acf' ); // ACF remove_menu_page( 'admin.php?page=cptui_manage_post_types' ); //CPT UI } } 

Isso é direto de um projeto atual em que estou trabalhando e faz um tratamento!