问题描述

我正在客户端访问的服务器上开发一个站点,我想做的是为管理员显示 WP_DEBUG 。在此引用 Yoast’s article

if ( isset($_GET['debug']) && $_GET['debug'] == 'true')
    define('WP_DEBUG', true);

将显示 WP_DEBUG 仅适用于连接有?debug=true 的网址,如 http://domain.com/?debug=true

我在想,Debug Bar 默认情况下可能会保留一些信息 (不管 WP_DEBUG 是否被打开),但是我觉得很疯狂,因为我不认为是这样。

所以,我在想的是有用的,将检查当前用户 (具有 manage_options 功能,然后通过 add_query_arg()运行链接:

function zs_admin_debug() {
    if (!current_user_can('manage_options')) {
        add_query_arg('debug','true');
    }
}

但我不确定的是 – 是否有一个钩子可以用来影响网站上的所有链接?这样,管理员总是看到调试,我认为这是非常有用的。感谢任何帮助一如既往!

最佳解决方案

我不认为有一个通用的 URL 钩子。有很多钩子,我可能错过了,但我不认为有一个。您可以通过 adambrown.info 上的挂钩查看。有很多 URL 钩子,但不是通用的。

如果我可以提出另一个解决方案:将错误记录到文件中。

/**
 * This will log all errors notices and warnings to a file called debug.log in
 * wp-content (if Apache does not have write permission, you may need to create
 * the file first and set the appropriate permissions (i.e. use 666) ) 
 */
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

该代码直接来自 the Codex for the wp-config.php file 。如果你这样做,你不必担心玩杂耍 $_GET 或整理谁是谁,谁不是管理员。

编辑:

我忘了一个可能的解决方案。你可以用 Javascript 做这个。一个简短的脚本可以将您的参数附加到页面上的所有 URL,您可以轻松地将脚本加载到管理员。

我仍然建议’log’ 解决方案,因为每个人的错误都被记录。如果你的人像我的,并发送错误’reports’ 像 「嘿,这个网站是坏的,当你这样做」 你会欣赏的日志。 🙂

次佳解决方案

即使我的第一个方法是垃圾桶,s_ha_dums 答案是一个干净的,也许是最好的方法,让我再提供一个工作场景:

以下内容设置了管理员登录到系统后的 24 小时 (86400 秒) 有效的 cookie 。在 wp-config.php 中,常数 WP_DEBUG 有条件地根据所述 cookie 的存在和值而定义。

注意事项:WP_DEBUG 此后将被设置为 true,用于在同一台机器上从同一浏览器登录的用户。

在 functions.php(或作为插件) 中:

function wpse_69549_admin_debug( $user_login, $user )
{
    if ( in_array( 'administrator', $user->roles ) ) {
        setcookie( 'wp_debug', 'on', time() + 86400, '/', get_site_option( 'siteurl' ) );
    }
}
add_action( 'wp_login', 'wpse_69549_admin_debug', 10, 2 );

参见:Codex > Action Reference > wp_login

在 wp-config.php:

if ( isset( $_COOKIE['wp_debug'] ) && 'on' === $_COOKIE['wp_debug'] ) {
    define( 'WP_DEBUG', true );
} else {
    define( 'WP_DEBUG', false );
}

第三种解决方案

它没有正确地回答你的问题,但从个人经验来看,最好是通过匹配 IP 地址而不是 URL 来启用调试模式。

这需要修改链接并解决在 WP 加载所需的用户功能之前如何识别管理员。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。