問題描述
我正在客戶端訪問的伺服器上開發一個站點,我想做的是為管理員顯示 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。