我发现了这段代码,可以在管理页面列表中隐藏页面,但我需要某种方法来完成这一千个页面:
add_action( \'pre_get_posts\' ,\'hide_pages_87ff65f5f\' );
function hide_pages_87ff65f5f( $query ) {
if( !is_admin() )
return $query;
global $currentpage;
$pages = array(\'2389\',\'2605\',\'2640\',\'2970\',\'2626\');
if( \'edit.php\' == $currentpage && ( get_query_var(\'post_type\') && \'page\' == get_query_var(\'post_type\') ) )
$query->set( \'post__not_in\', $pages );
return $query;
}
因为我迁移了一个大型静态站点,我想隐藏这个特定月份和年份的多个页面和帖子类型,所以我尝试了query and get\\u posts,但有些东西不起作用,或者在这里不可能:S
事实上,我需要在管理面板(如父选项框)中隐藏每个上下文的内容,但现在这已经足够了。
非常感谢您的帮助!
最合适的回答,由SO网友:brasofilo 整理而成
您发布的代码无效,因为没有global $currentpage
.
有$current_screen
和$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;
}
要在下拉框中隐藏页面数组,必须使用这些过滤器:
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;
}
排除页面的子级也不会显示。虽然我不确定这是不是
expected behavior...