有没有办法在编辑页面屏幕上删除或隐藏单独的页面?

时间:2012-05-23 作者:Kirkland

我想创建一些我不希望客户端通过编辑页面管理屏幕访问的页面。

我确实希望这些页面具有控制面板其他部分页面的所有正常功能。例如,我希望页面显示在。。。外观>菜单。。。因此,客户端可以在导航中重新排序或重命名它们。

我发现了一个几乎有完美答案的问题。。。

Create a page without adding a page in the Database

答案很好——它强制使用基于URL中键=>值对的模板,这意味着“页面”可以存在,而无需实际创建页面。缺点是它在其他地方的行为不像页面(例如:不是上面提到的自定义菜单选项),因为它实际上不是页面。

对我来说,理想的解决方案是创建一个真实的页面,并在加载“编辑页面”屏幕时将其过滤掉,但我不知道如何做到这一点。

我对完全不同的方法持开放态度,但如果自定义页面模板是解决方案的任何一部分,那么该解决方案还需要在编辑其他页面时将页面模板作为一个选项从下拉列表中删除,以便客户端无法复制这些页面。

提前感谢您的帮助。~科克兰

1 个回复
最合适的回答,由SO网友:Milo 整理而成

确实有办法。

function wpa53074_admin_exclude_page( $query ) {
    if( !is_admin() )
        return $query;

    global $pagenow;
    if( \'edit.php\' == $pagenow && \'page\' == get_query_var( \'post_type\' ) )
        $query->set( \'post__not_in\', array( 99 ) ); // <- page ID to hide

    return $query;
}
add_action( \'pre_get_posts\', \'wpa53074_admin_exclude_page\' );

结束