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下拉列表中删除模板.条件是这样的,脚本只在页面的添加和编辑屏幕上添加.
调整你的情况,享受:)