如何禁用 WordPress 主题编辑器

问题描述 投票:0回答:4

我知道如何禁用特定 WordPress 网站中的插件/主题编辑器。

我的问题:是否可以从主题的

functions.php
文件中禁用编辑器?

这个想法是在我的主题处于活动状态时默认关闭此功能;但是,一旦接受了一些警告,就可以通过主题选项页面重新启用编辑器。 (这是 WordPress 应该 做的事情,但无论出于何种原因,却没有这样做。)

除此之外,所讨论的特定主题非常先进。这意味着即使是知道自己在做什么的人也可能在没有意识到的情况下搞砸。

php wordpress wordpress-theming
4个回答
9
投票

Nick,你可以尝试使用action来调用functions.php中的函数来禁用编辑器,但是wordpress没有提供任何方法来仅禁用主题的编辑器。如果您使用 DISALLOW_FILE_EDIT,那么您的插件编辑器也将被禁用。

我觉得你应该尝试以下方法来禁用主题的functions.php中的编辑器。

    function disable_mytheme_action() {
      define('DISALLOW_FILE_EDIT', TRUE);
    }
    add_action('init','disable_mytheme_action');

您还可以定义一些选项并签入上述功能并相应地控制禁用文件编辑。


1
投票

一位朋友最终为我回答了这个问题,所以对于谷歌用户来说:

functions.php

if (in_array($GLOBALS['pagenow'], array('theme-editor.php'))) {
    if (get_option('theme_editor') != TRUE) {
        wp_die('<p>'.__('In order to edit this theme, you must first re-enable the theme editor via the <a href="'.theme::options_uri().'">Theme Options</a> page').'</p>');
    }
}

只需确保允许人们通过“主题选项”页面重新启用主题编辑器即可。尽管听起来很愚蠢,但有些人实际上真的很喜欢它,并且想要它。

我最终在重新启用按钮周围添加了一个非常明显的警告,如下所示:JSFiddle


0
投票

我找到的解决方案:

在functions.php或其他主题设置代码中:

add_action('admin_menu', 'edit_menu');

function edit_menu()
{
    global $menu;
    $user = wp_get_current_user();
    if (isset($user->roles) && is_array($user->roles)) {
        // Is the user an admin?
        if (in_array('the_role_you_want_to_change', $user->roles)) {
            foreach ($menu as $key=>$value)
            {
                if ($value[2] == 'themes.php') unset ($menu[$key]);
            }

-5
投票

打开您的 wp-config.php 文件添加代码

define( 'DISALLOW_FILE_EDIT', true );

或者尝试这个扩展

https://wordpress.org/plugins/disable-theme-and-plugin-editor/

© www.soinside.com 2019 - 2024. All rights reserved.