个性化阅读
专注于IT技术分析

如何在WordPress中隐藏模板? [关闭]

关闭。这个问题是题外话。它当前不接受答案。


想改善这个问题吗?更新问题, 使其成为Stack Overflow的主题。

7年前关闭。

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

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

例如, 我想隐藏” Blogger重定向”-模板波纹管:

图片只是一个例子...

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

编辑:如果有人对我如何检查插件是否活跃感兴趣, 请执行以下功能:

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

#1


更新-由安德鲁(Andrew)在以下评论中指出的警告:

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


我不确定是否有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 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);

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

适应你的情况并享受:)


#2


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

我想到的一种替代方法是, 你可以使用JavaScript动态删除它。在添加帖子页面中添加JavaScript片段, 这将从select元素中删除该选项。

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

编辑:

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

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

赞(0)
未经允许不得转载:srcmini » 如何在WordPress中隐藏模板? [关闭]

评论 抢沙发

评论前必须登录!