问题描述
我正在客户端访问的服务器上开发一个站点,我想做的是为管理员显示 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。