Определить ОТЛАДКУ WP условно /только для администраторов / ошибки журнала (добавить аргумент запроса для всех ссылок?)


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

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

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

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

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

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

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

Author: Johannes Pille, 2012-10-17

5 answers

Я не думаю, что существует универсальный 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);

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

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

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

Я бы все же предложил решение "войти", поскольку ошибки регистрируются для всех. Если ваши люди похожи на моих и отправляют "отчеты об ошибках", такие как " эй, сайт не работает, когда вы заполняете эту форму", вы оцените журнал. :)

 18
Author: s_ha_dum, 2020-06-15 08:21:38

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

Ниже устанавливается файл cookie, который действителен в течение следующих 24 часов (86400 секунд), когда администратор входит в систему. В 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 );

См.: Кодекс > Ссылка на действие > wp_login

В wp-config.php:

if ( isset( $_COOKIE['wp_debug'] ) && 'on' === $_COOKIE['wp_debug'] ) {
    define( 'WP_DEBUG', true );
} else {
    define( 'WP_DEBUG', false );
}
 9
Author: Johannes Pille, 2014-07-20 20:37:06

Это не дает точного ответа на ваш вопрос, но по личному опыту я обнаружил, что лучше включить режим отладки, сопоставив IP-адрес вместо URL.

, Который требует модификации ссылок и решает, как идентифицировать администратора до того, как WP загрузит необходимые пользовательские функции.

 3
Author: Rarst, 2012-10-17 14:50:28

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

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

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

 1
Author: prosti, 2016-04-24 01:05:07

Если у вас статический IP-адрес, вы можете сделать это:

if ('YOUR_IP_ADDRESS' == $_SERVER['REMOTE_ADDR']) {
    define('WP_DEBUG', true);
} else {
    define('WP_DEBUG', false);   
}

Источник: ОТЛАДКА WORDPRESS – КАК ИСПОЛЬЗОВАТЬ WP_DEBUG НА ПРОИЗВОДСТВЕННОМ САЙТЕ

 1
Author: jpussacq, 2018-06-27 18:00:00