如何在Wordpress中隐藏模板?

jam*_*lin 5 php wordpress wordpress-theming

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

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

例如,我想隐藏"Blogger重定向"-template如下:

图片就是一个例子......

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

编辑: 如果有人对我如何检查插件是否有效感兴趣我使用以下功能:

function isPluginActive($plugin){
        if ( in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) )
        {
            return true;
        }
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

Nik*_*lov 13

更新 - 安德鲁在下面的评论中指出的一个警告:

请谨慎使用此代码,如果您有任何使用从select中删除的模板的页面,则更新页面将使其恢复为默认模板


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

所以我建议你添加一个JS,它将从页面模板select中删除这个选项.这是一段代码片段:

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

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

调整你的情况,享受:)

  • 确保仅包含脚本的+1仅添加和编辑屏幕. (2认同)
  • +1用于解释WP如何检查模板文件. (2认同)
  • 请谨慎使用此代码,如果您有任何使用从select中删除的模板的页面,则更新页面将使其恢复为默认模板 (2认同)