Publicado el Tuesday 13 de February del 2007 @ 6:31 por Armonth.
Cuando WordPress no puede acceder a la base de datos muestra una página informando del error… una página cutre y ya demasiado vista.
Si le dedicamos horas a personalizar nuestro tema, ¿por qué no hacerlo con la página de error en la base de datos?. De seguro que alguna vez la tendrán que ver tus usuarios.
Las instrucciones están basadas en un artículo de All Forces aunque realmente no tiene ningún misterio y lo he ampliado bastante.
Aunque podríamos incrustar la página en el fichero wp-db.php, si actualizamos WordPress y nos olvidamos habremos perdido el tiempo inútilmente. Por ello recomiendo crear en la ruta de nuestra plantilla un fichero db-error.php. Para ello debemos tener en cuenta lo siguiente:
Es una buena idea enviar una cabecera HTTP 503. La cabecera HTTP 503 (Service Unavailable) es una cabecera que indica que en ese momento debido a problemas de red o del servidor el servicio no está disponible.
Algunos programas (o buscadores…) aprovechan esta cabecera para informar o para dejar de hacer ciertas tareas. En principio con la cabecera 503 se debería acabar que coincida una caída con que el googlebot pasa por la web y encontrarte que te ha indexado la página de error en la base de datos.
Una vez que tengamos la página, le ponemos al principio del todo un:
<?php header('HTTP/1.0 503 Service Unavailable'); ?>
Y ya la tenemos lista, solamente falta hacer el hack al WordPress.
El fichero a tocar es el wp-includes/wp-db.php, casi al final se ve una función llamada “ball”. Lo mejor es buscar en el código por “Justs wraps errors”.
Dentro de la propia función tiene la página de error BBDD yo lo que hago es borrarla dejándola así:
function bail($message) { // Just wraps errors in a nice header and footer
/* Custom Error page hack */
include(ABSPATH . 'wp-content/themes/tu-tema/db-error.php');
$error = ( !$this->show_errors ) ? '' : $this->show_errors;
die();
}
Solamente tenéis que cambiar la ruta para que “tu-tema” sea el nombre del directorio que alberga tu tema y el fichero db-error.php.
La mejor forma de probar si funciona es provocar un error en la BBDD, para ello podemos cambiar el nombre de la base de datos en el fichero wp-config.php por otro “un momento” y luego restaurarlo.
Además, si usáis WP-Cache, las páginas cacheadas seguirán enviándose y no se vera el error por lo que podremos entrar en el Dashboard (el cual nunca es cacheado) y ver el fallo medio tranquilos.
Ahora veamos quien es el primero en ver la de SigT ;-).
Pues no se como voy a verla si no te sale ningun error en la BBDD, pero bueno me conformare con ver la del error 404 :P
All your base are belong to us
Lo siento en el alma, lo siento de verdad, pero parece ser que has llegado a está página que es una página de Error404 lo cual significa que el enlace que te ha llevado aquí no funciona.
Este error ha sido causado por la solicitud de una web, documento o recurso no disponible dentro del propio servidor, algunas de las posibles causas:
Se ha escrito un enlace externo sin el http: // delante y sale como: http:/ /sigt.net/$RUTA_A_LA_WEB_EXTERNA.
Una web externa ha enlazado a SigT (se agradece) pero da Error 404: Seguramente se ha equivocado al escribir el enlace, poco se puede hacer salvo informar al autor.
* Se enlaza a un documento guardado en SigT pero falla, seguro que es una chapuza de las mias :P así que contactadme.
Espero que cualquier error de este tipo o parecidos no lo veáis a menudo :-)
cierto, he caido luego tras darme ese fallo en otro blog (esta vez sin buscar el fallo xD )
Tengo un problema…
Al agregar esta linea de codigo:
Me dice lo siguiente:
Warning: Cannot modify header information – headers already sent by (output started at /home/www/ninioromantico.com.ar/wp-includes/wp-db.php:373) in /home/www/ninioromantico.com.ar/wp-includes/wp-db.php on line 373
Nota: No cree un archivo aparte, solo modifique el que ya estaba.
Osea modifique: wp-db.php
¿Como puedo hacer para agregar la cabecera 503 sin que aparezca ese error?
Gracias al buen Dreamhost ya pude ver tu platilla personalizada xxDD
Muy bueno, pero no lo hice al pié de la letra, sino que modifiqué el final del archivo wp-db.php, su para que muestre lo que quiero que se vea en html. Solamente cambié la imágen, no quise alterar el resto por fiaca y para no deshabilitar mi web así vería cómo me falla.
Un abrazo.
Oye que molón!!!, yo ya me creé una página así y va de perlas, me vendrá muy bien para el server q tengo q como es gratis falla de vez en cuando :)
El problema es que cuando actualice wordpress se me olvidará cambiar lo de wp-includes/wp-db.php