Intereting Posts

Как протоколировать mysql-ошибки из ядра wordpress?

Я разрабатываю сайт wordpress, и я хотел бы иметь возможность регистрировать и обрабатывать ошибки mysql из ядра wordpress.

На моем сайте есть сочетание страниц WordPress и сообщений + несколько страниц php, которые работают под движком wordpress. Я настроил php.ini для добавления php-файла ко всем php-скриптам с функциями обработки ошибок. Они отлично работают, чтобы ломать ошибки php как в ядре wordpress, так и в моих собственных php-скриптах.

Я также улавливаю все ошибки MySQL в своих собственных php-скриптах. Например, невозможность подключения к базе данных и т. Д.

Я хотел бы также уловить, зарегистрировать и обработать возможные ошибки MySQL из приложения wordpress core.

Какие-либо предложения?

Благодарю.

Я читал код и не нашел ответа

Solutions Collecting From Web of "Как протоколировать mysql-ошибки из ядра wordpress?"

Вы должны использовать класс wpdb для всех своих запросов. Все основные запросы также используют wpdb . См. wpdb Показать и скрыть ошибки SQL

 <?php $wpdb->show_errors(); ?> <?php $wpdb->hide_errors(); ?> 

Вы также можете распечатать ошибку (если она есть), сгенерированную самым последним запросом с помощью print_error.

 <?php $wpdb->print_error(); ?> 

Также см. SAVEQUERIES константу для wp-config.php :

 define('SAVEQUERIES', true); 

пример использования:

 <?php if (current_user_can('administrator')){ global $wpdb; echo "<pre>"; print_r($wpdb->queries); echo "</pre>"; } ?> 

Существует также ряд полезных модулей для отладки, таких как Debug Bar & Console. Найдите репозиторий плагинов WordPress для этого и других связанных с отладкой плагинов.

Один из способов сделать это:

  1. Создайте файл с именем db.php в wp-content . WordPress будет читать этот файл непосредственно перед созданием объекта $wpdb .
  2. Создайте class который расширяет wpdb и перезаписывает метод print_errors чтобы делать все, что вы хотите.
  3. В конце этого файла создайте экземпляр класса, задав ему переменную $wpdb (например, $wpdb = new wpdb2(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST); )
  4. Теперь WordPress будет использовать ваш $wpdb .

попробуйте

 global $wpdb; echo $wpdb->last_query; 

поскольку я работаю с ajax, это прямо в строковой форме.