Hiding posts and pages in panel

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

Leave a Comment