5

有没有办法在管理员中隐藏模板文件?

例如,我有一个模板,只有在安装了特定插件时才可用,而且我已经知道如何检查插件是否处于活动状态。但是如何隐藏模板?

例如,我想在下面隐藏“Blogger 重定向”模板:

图片只是一个例子...

我找到了几个链接,但所有解决方案似乎都已弃用。

编辑: 如果有人对我如何检查 pluin 是否处于活动状态感兴趣,我会使用以下功能:

function isPluginActive($plugin){
        if ( in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) )
        {
            return true;
        }
        return false;
    }
4

2 回答 2

13

更新 - 正如安德鲁在以下评论中指出的那样,请注意:

谨慎使用此代码,如果您有任何页面使用从选择中删除的模板,更新页面将导致它恢复为默认模板


我不确定是否有 PHP 方法可以做到这一点 - 你必须查看WP_Theme类,但从我的第一眼来看,这可能是不可能的,因为为了获取所有模板,类使用了一个名为的内部函数scandir()它扫描当前主题目录并.php从那里获取所有文件。然后它会查找相应的Template Name:标识符,如果存在,它将被添加到模板列表中。

因此,我建议您添加一个小 JS,从页面模板选择中删除此选项。这是一个代码片段:

function my_remove_page_template() {
    global $pagenow;
    if ( in_array( $pagenow, array( 'post-new.php', 'post.php') ) && get_post_type() == 'page' ) { ?>
        <script>
            (function($){
                $(document).ready(function(){
                    $('#page_template option[value="sidebar-page.php"]').remove();
                })
            })(jQuery)
        </script>
    <?php 
    }
}
add_action('admin_footer', 'my_remove_page_template', 10);

sidebar-page.php这将从下拉列表中删除模板。条件是仅在页面的添加和编辑屏幕上添加脚本。

根据您的情况调整并享受:)

于 2012-11-26T14:33:32.363 回答
4

WordPress 不提供任何挂钩,因此您无法将其从 PHP 中删除。

我能想到的另一种选择是您可以使用 JavaScript 动态删除它。在页面中包含一段 JavaScript add post,它将从select元素中删除该选项。

我知道这不是一个干净的解决方案,但我认为这是目前唯一可能的方法。

编辑

另一种选择是在插件激活时将模板文件复制到主题目录,并在插件停用时删除模板文件。

这假定模板仅由该插件使用。

于 2012-11-26T14:27:21.863 回答