DISALOW_FILE_EDIT wp-CONFIG常量的替代方案?它破坏了一些插件

时间:2012-06-04 作者:brasofilo

我第一次注意到这个问题是在插件快速缓存中,它可以毫无问题地激活,但不会出现在任何地方。它的菜单根本就不在那里。找到原因并意识到冲突,in the forums.

问题是插件使用edit_plugins, 已被常量删除。。。

现在我发现,插件搜索和替换的bug也是常量
enter image description here

解决方案我刚刚将此信息添加到Codex.

并希望搜索启用DISALLOW\\u FILE\\u EDIT的替代方法。

筛选map_meta_cap, 显然,这不起作用
我能想到的是删除submenu item, 行动链接,如果有人登陆/plugin-editor.php 通过直接URL,使编辑器窗口为只读。

我已经汇编了这段代码,并将作为一个答案发布,但我很高兴知道这个社区的意见和其他可能的方法。

3 个回复
最合适的回答,由SO网友:brasofilo 整理而成

我想作为一个mu-plugin.

EDIT: 现在提供drop&;功能;播放MU插件。还禁用»主题«编辑器。

<?php
! defined( \'ABSPATH\' ) AND exit;
/** Plugin Name: Disable »Theme/Plugin Editor« */


if ( ! class_exists( \'disable_admin_editor\' ) )
{
    add_action( \'plugins_loaded\', array( \'disable_admin_editor\', \'init\' ) );

class disable_admin_editor
{
    public static $instance;

    public static function init()
    {
        null === self :: $instance AND self :: $instance = new self;
        return self :: $instance;
    }

    public function __construct()
    {
        ! defined( \'DISALLOW_FILE_EDIT\' ) AND define( \'DISALLOW_FILE_EDIT\', true );

        add_action( \'admin_init\', array( $this, \'remove_edit_submenu\' ) );
        add_filter( \'plugin_action_links\', array( $this, \'remove_edit_action\' ), 10, 2 );
        add_action( \'admin_footer-plugin-editor.php\', array( $this, \'readonly_textarea\' ) );
    }

    /**
     * Remove Edit submenu
     */
    public function remove_edit_submenu()
    {
        remove_submenu_page( \'plugins.php\', \'plugin-editor.php\' );
        remove_submenu_page( \'themes.php\', \'theme-editor.php\' );
    }

    /**
     * Remove the »Edit« link from all plugins
     * @param  array  $links
     * @param  string $file
     * @return array  $links
     */
    public function remove_edit_action( $links, $file ) 
    {
        unset( $links[\'edit\'] );
        return $links;
    }

    /**
     * Makes the editor read-only and removes the Update button
     */
    public function readonly_textarea()
    {
        echo \'<script type="text/javascript">
        jQuery(document).ready( function($) {
            $( "#newcontent" ).attr( "readonly", true );
            $( "input#submit" ).remove();
        } );     
        </script>\';
    }
} // END Class 

} // endif;

SO网友:bueltge

无法通过挂钩更改此检查;但我将在新的XT版本中对此进行更改;我很久以前就看到这个问题了,但没有足够的时间进行更新。是的,可以通过常量删除此正确的功能,然后不可能使用此插件。我会要求manage_options, 但对于这个插件来说并不是最好的,在表上进行硬更改,我认为这是一种更新功能;还有就是改变它。

SO网友:chuck reynolds

同样,您可以通过admin\\u init删除其他子菜单

remove_submenu_page( \'themes.php\', \'theme-editor.php\' );

结束

相关推荐

wp-admin redirects to 404

昨天我登录了我的网站,发现当我以管理员身份登录时,出现了404错误,如下所示:我做了一些研究,上传了一个备份,修改了我的.htaccess 文件收件人:# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f Rewrite