删除某些页面的模板下拉菜单

时间:2013-03-10 作者:dclawson

我有一些自定义模板,它们被分配到我的管理中的不同页面。

是否可以隐藏/锁定特定页面的模板下拉列表?例如,我有一个Events Calendar 模板,该模板将仅分配给事件日历页,因此客户端无需在下拉框中看到该模板,但管理员仍应可以访问该模板。

感谢您的帮助或指导。

2 个回复
SO网友:kaiser

“如何?”

为了摆脱一个元框,在将它们添加到内部后,您直接获得了几个挂钩~/wp-admin/edit-form-advanced.php. 你需要的那个\'dbx_post_advanced\'. 您只需使用remove_meta_box().

<?php
defined( \'ABSPATH\' ) or exit;
/** Plugin Name: (#90253) Remove Page Template Drop Down */
add_action( \'dbx_post_advanced\', \'wpse90235_remove_page_template_metabox\' );
function wpse90235_remove_page_template_metabox()
{
    remove_meta_box( \'pageparentdiv\', null, \'side\' );
}
这是唯一的机会。

他们“为什么?”

Thepage_attributes_meta_box() 生成元框的回调使用wp_dropdown_pages() 并通过名为\'page_attributes_dropdown_pages_args\' 它有两个参数:$dropdown_args$post. 当你看这些论点时,你会发现echo 参数设置为0/false, 它不应该输出任何东西。

$dropdown_args = array(
    \'post_type\'        => $post->post_type,
    \'exclude_tree\'     => $post->ID,
    \'selected\'         => $post->post_parent,
    \'name\'             => \'parent_id\',
    \'show_option_none\' => __(\'(no parent)\'),
    \'sort_column\'      => \'menu_order, post_title\',
    \'echo\'             => 0,
);
。。。可悲的是echo 之后立即强制:

<?php echo $pages; ?>

SO网友:Norcross

需要考虑的一件事是:如果命名模板文件page-{$page_slug}.phppage-{$ID}.php (匹配管理界面/区域/后端中的页面),然后它将加载该模板,而不会在下拉列表中显示为“页面模板”。

请参见Template Hierarchy Diagram 在法典中。

结束

相关推荐

Custom Post Type Templates?

是否可以为自定义帖子类型设置模板?例如,您有一个具有4种不同布局变体的公文包页面,您希望用户能够选择此帖子/页面所需的布局?想知道你们这些好人有没有办法?谢谢:)