Определить WP_DEBUG условно / только для ошибок admins / log (добавить аргумент arg для всех ссылок?)

Я разрабатываю сайт на сервере, к которому клиент имеет доступ, и что я хотел бы сделать, это показать WP_DEBUG только для администраторов. Ссылка на статью Йоаста об этом:

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

будет показывать WP_DEBUG только для URL-адресов, к которым привязано ?debug=true , например http://domain.com/?debug=true

Я думал, что панель Debug может содержать некоторую часть этой информации по умолчанию (независимо от того, WP_DEBUG ли WP_DEBUG ), но я WP_DEBUG поскольку я не считаю, что это так.

Итак, то, что я думал, было бы полезно, будет проверка для текущего пользователя (с возможностью manage_options и последующим запуском ссылок через add_query_arg() :

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

но я не уверен в этом – есть ли крючок, который я могу использовать для создания всех ссылок на сайте с этим? Таким образом, администраторы всегда видят debug, который, как я думал, будет чрезвычайно полезен. Спасибо за любую помощь, как всегда!

Solutions Collecting From Web of "Определить WP_DEBUG условно / только для ошибок admins / log (добавить аргумент arg для всех ссылок?)"

Я не думаю, что есть универсальный 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 (ie use 666) ) */ define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors',0); 

Этот код прямо из Codex для файла wp-config.php . Если вы это сделаете, вам не придется беспокоиться о жонглировании $_GET или о том, кто есть и кто не является администратором.

Редактировать:

Я забыл одно возможное решение. Вы можете сделать это с помощью Javascript. Короткий сценарий может присоединить ваш параметр ко всем URL-адресам на странице, и вы можете легко загрузить сценарий только для администраторов.

Я все же предлагаю решение «log», поскольку ошибки для всех регистрируются. Если ваши люди похожи на мои и отправляют сообщения об ошибках, например « эй, сайт сломан, когда вы делаете эту форму », вы по достоинству оцените журнал. 🙂

Несмотря на то, что мой первый подход был для мусорного контейнера, а ответ s_ha_dums – это чистый и, вероятно, лучший способ обхода, позвольте мне предложить еще один рабочий сценарий:

Следующее устанавливает cookie, действительный в течение следующих 24 часов (86400 секунд), когда администратор входит в систему. В wp-config.php константа WP_DEBUG условно определяется в зависимости от наличия и значения указанного файла cookie.

Предостережение: после этого WP_DEBUG будет установлен в true для всех, WP_DEBUG войдет в систему из одного браузера на том же компьютере в тот же день.

в 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 загрузит требуемые пользовательские функции.

Это также может быть хитростью, но вам нужно поместить это в свой wp-config.php поскольку WP_DEBUG определен WP_DEBUG :

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

Добавьте ?debugsecret=debugsecret к URL-адресу страницы, который вы хотите отлаживать.