Como logar erros do mysql do wordpress core?

4

Estou desenvolvendo um site wordpress e gostaria de poder registrar e tratar erros do mysql do núcleo do wordpress.

Meu site tem uma mistura de páginas e posts wordpress + algumas páginas php que rodam sob o mecanismo wordpress. Eu configurei o php.ini para preceder um arquivo php para todos os scripts php com as funções de tratamento de erros. Eles estão funcionando bem para capturar erros php tanto no núcleo wordpress e em meus próprios scripts php.

Eu também pego todos os erros do MySQL em meus próprios scripts php. Por exemplo, falha ao conectar-se a um banco de dados, etc.

Eu gostaria de poder também capturar, registrar e processar eventuais erros do MySQL a partir do aplicativo principal do wordpress.

Alguma sugestão?

Obrigado.

Eu estava lendo o códice e não consegui encontrar uma resposta

    
por jdias 25.01.2013 / 01:53

3 respostas

6

Você deve usar a wpdb class para todas as suas próprias consultas. Todas as consultas principais também usam wpdb . Consulte wpdb Mostrar e ocultar erros de SQL

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

Você também pode imprimir o erro (se houver) gerado pela consulta mais recente com print_error.

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

Veja também SAVEQUERIES constante para wp-config.php :

define('SAVEQUERIES', true);

exemplo de uso:

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

Existem também vários plugins de depuração úteis, como a Barra de Depuração & Console. Pesquise no repositório de plugins do WordPress por este e outros plugins relacionados a depuração.

    
por Milo 25.01.2013 / 02:27
0

Uma maneira de fazer isso:

  1. Crie um arquivo chamado db.php in wp-content . O Wordpress lerá esse arquivo imediatamente antes de instanciar o objeto $wpdb .
  2. Crie um class que estenda wpdb e sobrescreva o método print_errors para fazer o que você quiser.
  3. No final desse arquivo, instancie sua classe, definindo a variável $wpdb (por exemplo, $wpdb = new wpdb2(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST); )
  4. Wordpress agora usará seu $wpdb .
por blockhead 21.05.2013 / 17:10
0

tente com

global $wpdb;
echo $wpdb->last_query;

como eu estou trabalhando com ajax, isso está diretamente na forma de string.

    
por insidepower 13.06.2015 / 04:08