The code you posted doesn’t work because there is no global $currentpage
.
There are $current_screen
and $pagenow
.
add_action( 'pre_get_posts', 'wpse_63414_hide_pages' );
function wpse_63414_hide_pages( $query ) {
if( !is_admin() )
return $query;
global $pagenow;
$pages = array('2','26');
if(
'edit.php' == $pagenow
&& ( get_query_var('post_type') && 'page' == get_query_var('post_type') )
)
$query->set( 'post__not_in', $pages );
return $query;
}
And to hide the array of pages in the dropdown boxes these filters have to be used:
add_filter( 'page_attributes_dropdown_pages_args', 'wpse_63414_hide_dropdown_pages' );
add_filter( 'quick_edit_dropdown_pages_args', 'wpse_63414_hide_dropdown_pages' );
function wpse_63414_hide_dropdown_pages( $args )
{
$args['exclude'] = '2,26';
return $args;
}
The child of the excluded pages are not shown as well. Although I’m not sure if this is the expected behavior…