WordPress “under development”

06 Dec 2009

Alguna vez me ha pasado que instalo un WordPress en el hosting para ir montando la web, pero quiero que sólo el cliente vaya viendo los avances. A veces, para que no haya problemas en el despliegue del sitio web, es muy interesante eso, hacer el propio desarrollo en el mismo entorno donde se alojará la web. Así no te llevas sorpresas (y WordPress guarda unas cuantas cuando lo mueves de un sitio a otro).

El truco en este caso puede ser mover el entorno a un subdirectorio (como http://midominio.com/pruebas6754), pero WordPress almacena en la base de datos las rutas donde está alojado, que hay que cambiar si se mueve de sitio, … Un follón.

Pensé en meter un index.html porque, tradicionalmente, los Apache dan preferencia a los index.html antes que a los index.php como ficheros a servir por defecto cuando no se especifica el archivo (como en una petición a http://midominio.com/cosas, donde se serviría el archivo {$WWWROOT}cosas/index.html.

El problema es que muchos hosting ya pasan de index.html, y hacen bien, porque ya no estamos en 1999. Pero bien es cierto que en este caso nos vendría de perlas, porque colgaríamos un index.html que dijera “En construcción, fistro”, y para ver la web “en desarrollo” bastaría con ir a http://midominio.com/index.php (aunque con ciertas limitaciones en el caso de WordPress).

Vaya, otro camino cortado. Es por ello que normalmente hago la práctica (mala, por cierto) de añadir el siguiente código (en negrilla) al index.php de WordPress, antes de la llamada “require” que hace el resto de la magia:

define('WP_USE_THEMES', true);

session_start();

if(isset($_GET["cacaculopedopis"]))

  $_SESSION["test"] = true;

if(isset($_SESSION["test"]){

  echo file_get_contents("index.html");

  die();

}

require('./wp-blog-header.php');
?>

Gracias a esto, para ver el blog, habrá que visitar http://midominio.com/?cacaculopedopis=loquemasrabiatede, una vez hecho esto, se activará una variable de sesión que hará que te deje “pasar a la versión real” cada vez que entres.

Cuando decía que esto es una mala práctica es porque no es nada recomendable modificar ficheros base de WordPress (y menos este, que es el que menos código tiene pero el más importante, ya que todas las peticiones pasan por aquí). ¿Por qué es una mala práctica modificar ficheros de WP? Pues porque en cada actualización tendrás que ir “llevando” ese código, con los problemas que puede causar (que el if donde lo has metido haya cambiado de lugar, por ejemplo). Pero en este caso es “haceptable” ya que es un código que no se va a mantener entre actualizaciones, porque la idea es borrarlo cuando el sitio esté online.

Es una tontería, pero ahorra mucho trabajo. Y la verdad es que trabajar en remoto (con SFTP) no es tan incómodo, y más aun cuando es en un sitio que aun no tiene visitantes, ya que tienes todo para tí solito. Lo ideal en estos casos es hacer un master en VI, pedir acceso shell por SSH, y trabajar así, pero bueno. Eso queda para otro momento.

session_start();
if(isset($_GET["caleidoscopios1ngul4r"])){
$_SESSION["test"] = true;
//echo “–”.$_SESSION["test"];
}
if($_SESSION["test"]!=true){
echo file_get_contents(“index.html”);
die();
}