General

Cómo guardar un registro de cambios en la base de datos de WordPress

Descubre cómo guardar un registro de los cambios que se producen en la base de datos de Wordpress para luego implementarlo en remoto. ¡Ahí es nada, un post muy denso para empezar el año!

¿Y ahora? Ahora a por el niño!!! Chuiqui chuiqui … jajajajaja. Me parto con ese anuncio… (y no soy el único). Pero es que tengo que decir que ¡Feliz Año Nuevo! Las navidades ya pasan y ahora que está cerrado el 2013, toca arrancar un 2014 que, así de entrada, no pinta nada mal. Veremos como se desarrolla.

¿Tu bien? ¡Espero que si! Y espero que hayas cogido fuerzas porque el post de hoy es a lot of advanced. Si, reconozco que no es la mejor forma de empezar el año pero, como sabes, yo soy de contar lo que me ocurre en mi trabajo diario y esto es cómo he empezado yo el año.

Así que sin mas … ¡manos a la obra Benito! (uffff, que serie mas mala …)

El dilema de actualizar un sitio en producción

Vamos a ponernos en antecedentes. Tienes un blog en producción, publicado y que recibe sus visitas, sus comentarios, se comparte en Social Media y sobre el que publicas tus posts cada x tiempo.

Entonces, decides que quieres incluir una nueva sección o funcionalidad, actualizarlo, probar plugins nuevos, etc. ¿Qué haces?

  • Hacer las pruebas directamente en el blog. Ufff, mal camino llevas y lo sabes. Estar instalando y desinstalando plugins, probando configuraciones y todo eso en tu blog al que, al mismo tiempo, te están visitando tus lectores es un gran error porque pueden producirse errores que, aunque tu sepas que son eventuales, ellos pueden interpretar mal y decidir irse para no volver. ¡Esto es caca! Nop, definitivamente no se puede hacer esto.
  • Hacerlas en una copia aislada de la Web. Ésta seguro que la habrás oído cantidad de veces. Todos dicen que es la mejor opción. Te descargas una copia completa de tu blog a un “servidor local” y traqueteas con esa copia, haciendo cambios que solo tu verás mientras tus lectores visitan, comparten y comentan tu blog “público” sin enterarse de nada.

Vaaaaale, efectivamente, la segunda es la mejor opción …. “pero no siempre”!!!. Por ejemplo, actualizar un plugin. En este caso si probaría primero en local y, si todo va como la seda, entonces lo haría en el “público”. Estaría repitiendo trabajo, pero solo es actualizar un plugin. ¿Verdad? ¿Y si es instalar y configurar todo un sistema de afiliación y reservas en tu blog? ¡Esto ya son palabras mayores! Entonces nos estamos enfrentando a un dilema:

  • Paralizar las actualizaciones en el remoto mientras estamos trabajando en local. Porque durante los 10 días que vamos a estar probando y configurando el nuevo plugin en local, también vamos a estar publicando, comentando y respondiendo en el “público”. Entonces, una vez terminado, ¿con qué cambios nos quedamos? Si subimos todo el local, tendremos lo nuevo pero habremos perdido los comentarios y tal. ¿Cómo combinamos la información?
  • Anotar exhaustivamente todo lo que hacemos en local y duplicar todo el trabajo. La otra opción que tenemos, y ojo que no es nada mala, es ir anotando todo lo que hacemos en local para luego reproducirlo en el servidor público, en una hora, mientras éste está parado. El único problema es que, además de duplicar trabajo, que algo funcione en local no siempre te garantiza que funcione en remoto y puedes verte en la situación de romper tu blog y tardar más en arreglarlo, con la consiguiente pérdida de visitas.

Anotar todos los cambios que se producen en la BD

Si te soy sincero, no me voy a pronunciar a favor ni en contra de ninguna de ellas porque las uso ambas por igual y todas ellas me han supuesto alegrías y “pesámbres” (coñe, Word no reconoce “pesambres, pero si en mi pueblo se dice un montón!!!) en distintos casos.

Lo que si te puedo decir es que existe una tercera, intermedia, que te cuento en este post y que puede servir en aquellos casos en los que ninguna de las anteriores nos sirva: automatizar la toma de apuntes de los cambios.

Para entender este truco, tienes que saber esto: WordPress está formado por archivos y una base de datos. Es decir, que absolutamente todo lo que hace WordPress y sus plugins es resultado de la combinación de archivos y base de datos.

Por tanto, cualquier operación podrá afectar a los archivos, a la base de datos o (lo más normal) a ambos.

Pues bien, ¿Y si pudiésemos trabajar en local y luego decir algo así como “aplica todos los cambios en el remoto”?. ¡Menuda pasada! Pues, volviendo a la afirmación de antes, esto sería algo así como “Sube todos los ficheros nuevos y actualizados y aplica todos los cambios producidos en la base de datos”.

Lo primero es muy fácil de conseguir, ya que programas de FTP tienen la opción de “subir solo archivos mas nuevos”. Yo lo hago con Dreamweaver.

En cuanto a la Base de Datos, lo que vamos a hacer es modificar WordPress para que “anote” en un archivo cada cambio que se realice en la base de datos, para luego aplicarlo en la versión remota.

Así de fácil:

Edita el fichero wp-config.php y añade estas líneas justo antes de donde dice Esto es todo, deja de editar

define('LOGQUERIESINFILE',false);
define('LOGQUERIESFILE', dirname(__FILE__).'/queries.txt');

Luego, tienes que editar este fichero: wp-includes/wp-db.php e ir a la línea 1210 para pegar este texto:

if (defined( 'LOGQUERIESINFILE') && LOGQUERIESINFILE )
{
$fichero = LOGQUERIESFILE;
$linea = $query."\r\n";
if (substr($linea,0,6) != 'SELECT') {
file_put_contents($fichero, $linea, FILE_APPEND | LOCK_EX);
}
}

Básicamente, lo que hacemos es utilizar el motor de bases de datos de WordPress, por el que deben pasar todas las operaciones que se realizan a la BD, e indicar que anote cualquier operación en un fichero queries.txt que se guardará en la raíz de tu blog.

Denso, ¿verdad? Ufffff, si hasta yo mismo me he aburrido … jajajajajaja.

Bueno pues lo dejo aquí. Si te has aburrido lo entiendo pero, porfi porfi porfi, no me dejes porque los próximos posts que vienen son más chulos y menos densos!!! ¿Me perdonas por este chapapost? Jajajajaja, me acabo de inventar otro palabro. Na, hay cosas que nunca cambian…

¿Y qué pregunto ahora? Fácil: ¿qué preguntar en un post como este? ¿Qué te van a traer los Reyes Magos? ¿Qué te pareció el regalito que te envié? Happy Bloging!

Acerca del autor

Víctor Campuzano

Growth Hacker no soy, pero lo vivo. De mi blog no vivo, pero aquí si que soy como soy. Marketing Digital, Creatividad y Blogging con pasión y desenfado. Alumno del Postgrado de Growth Hacking por IEBS.

Ahora es tu momento

*

12 comentarios

  • Empezaré con una de tus palabras…

    ACHO menudo postazo!!

    El día que lo entienda tendré un nivelazo que ni el de problogger!! Jajajajajaja ;D

    Pero es genial para poder ampliar los gustos de tu comunidad. Que no te dejamooooos!!!

    Un besote enorme de Año Nuevo*

    No he podido ver aún tu regalito porque estoy con iPhone e iPad pero con cacawifi y sin PC en mi patriaaaa!! ;D

    • Jajajajajaja, Gracias Elisabet!! Pues seguro que te gusta, la verdad que es que te lo debo a ti, tu me diste la inspiración para ello y para aquel post sobre “cómo ofrecer un archivo a tus suscriptores”. Si no fuese por ti … 🙂

      Un fuerte abrazo Elisabet!

  • SI te digo la verdad, me has dejado “helao”. yo que creía que estaba empezando a entender wordpress y me leo un artículo que m suena a chino. Me has creado un problema. Yo que pruebo todo en vivo y en directo por puro desconocimiento. Uff, a aprender algo nuevo. Esto no tiene descanso!

    Y publicad menos , leñe! , que no me da tiempo a leer todo lo que me gustaría, aplicarlo, comentar los articulos que me gustan ,…

    • Jajajajajaja, pues en menudo mundo te has metido Javier. Aquí nadie para nunca de aprender!!! 🙂

      Pero tu tranqui, que esto que he explicado en este post es solo para “freaks” y en rara ocasión te verás en la situación de tener que aplicarlo. De hecho, en rara ocasión me veré yo en situación de tener que aplicarlo.

      Gracias por pasarte y comentar!! 🙂

  • Genial el aporte, aunque yo soy más de actualizar en “vivo”. Si me pongo con tantas cosas a la final no actualizo o cambio las cosas (sé que no es lo mejor) pero cuando son cambios muy evidentes (como las plantillas que algunas te vuelven las entradas una m…da) escribo en las redes sociales y pido paciencia.

    Lo dicho, no es lo menor , pero me funciona. A ver cómo me va aplicando lo explicado (cuando llegue el momento :))

    • Pues tienes mucha razón Diana. Como digo, en muchas ocasiones es mejor ir por el camino fácil y aplicar los cambios directamente online, aunque eso pueda suponer un tiempo de “desfase” o mala visualización.

      Gracias por el comentario!!! 🙂

  • Si me admites la sugerencia, tendrías que plantearte lo de empezar con los #Bundismos… seguro que a más de uno y una los dejas fuera de juego… te ayudo con el primero:

    #Bundismo 001: La Web 2.0 se compone de archivos y bases de datos.

    Así lo entiende cualquiera…. 😛

  • amigo tengo una tabla llamada carrera en una base de datos llamado maraton esta alojada en un servidor gratuito
    tengo usuario paword alojamiento todo
    tengo una forma en wordpress que pide los datos de los corredores ,lo puedes ver en inscripción en carrera correfox , la pregunta es como guardo esos datos en la tabla , gracias pendiente de tu ayuda , tu blog es muy bueno , cuídate y Gracias de antemano.

    si me puedes dejar un ejemplo de copiar y pegar donde yo cambie los datos te lo agradeceria mucho , la verdad no se nada de codigo , solo arrastra y soltar eso si , en visual foxpro 9 te puedo ayudar en lo que quieras .. mira esto , posiblemente lo puedas usar

Uso de cookies

Esta web utiliza cookies propias y de terceros, como Google Analytics, para optimizar su navegación y realizar tareas de análisis y las pertenecientes a WordPress. Advierto que si continuas navegando, aceptas su uso. Puede cambiar la configuración, desactivarlas u obtener más información.

ACEPTAR
Aviso de cookies