3 líneas de código para optimizar tu WordPress sobremanera

Publicado en Optimización web( WPO ) hace 1 año y 3 meses. Leído 1606 veces.

imagen destacada

Como ya vimos en el post de WordPress es un CMS lento, este CMS tiene alzheimer. Es decir, recorrerá todos los archivos de tu tema y plugins, una y otra vez, por cada petición web.

Da igual que esa petición web sea un AJAX y no sea necesario, ni rápido, que se haga la carga de archivos CSS/JS o de menús/sidebars. Da igual que estemos en la zona de administración y no sea necesario, ni óptimo, cargar los shortcodes de la zona pública. Da igual que estemos en la zona pública y no sea necesario, y haga lenta tu página, cargar los CSS/JS de ese plugin tan molón que te instalaste que mejora la WPO de tu WordPress. Pero es lo que hay, ya que WordPress, si no le decimos lo contrario, hará todo eso. Voy a poner un símil para que se vea mejor:

Imagínate que para ir a cualquier punto de tu ciudad hubiera que usar siempre la misma carretera. Ya sea que vayas a comprar, a trabajar o a visitar a un amigo, siempre es necesario pasar por esa carretera. No sólo tú, sino todos los habitantes de tu ciudad. ¿ Qué pasará ?, pues que habrá atascos interminables y que para llegar a cualquier sitio te llevará bastante tiempo. Ese problema también es el de WordPress. Sin embargo, hay una solución: crear bifurcaciones, o caminos alternativos, a esa carretera. Esta solución tan obvia es también la adecuada para tu WordPress.

Sin embargo, esto que es tan elemental en WordPress y que aumenta la velocidad de tu WordPress sobremanera, nadie lo hace. Sí, he dicho bien, nadie. Ni los temas premiums. Es una lástima porque sólo se trata de pararse a pensar la arquitectura de tu theme, escribir tres líneas y luego distribuir las funcionalidades según la zona y si es ajax o no. Fíjate, las tres líneas que te digo son las siguientes y deberían ser escritas en el functions.php del tema:

Estas líneas lo que hace es bifurcar, o distribuir, todas las peticiones contra tu WordPress hacia cuatro archivos situados en un directorio de nombre 'functions' bajo la raíz del tema:

  • admin-ajax.php: Este archivo contendrá todas las funcionalidades que necesitas que se carguen por AJAX en tu zona de administración.
  • admin.php: Este archivo contendrá todas las funcionalidades que necesitas que se carguen en tu zona de administración que no sean AJAX.
  • public-ajax.php: Este archivo contendrá todas las funcionalidades que necesitas que se carguen por AJAX en tu zona pública, no administrativa.
  • public.php: Este archivo contendrá todas las funcionalidades que necesitas que se carguen en tu zona pública, no administrativa, y que no sean AJAX.

Luego, estas cuatro bifurcaciones, para que WordPress sea aún más rápido, deberían de bifurcarse aún más. Un par de ejemplos:

  • Podrías hacer una bifurcación en la zona pública dependiendo de si es un contenido, o no, a lo que se está accediendo. Para hacer esta bifurcación puedes usar la función WordPress is_singular().
  • O podrías hacer una bifurcación en la zona administrativa para determinar si estás en la página de widgets, para cargar los widgets sólo ahí y así no hacerlo en cada página de la zona administrativa. Para crear esta bifurcación puedes hacerlo mediante la función WordPress get_current_screen()( en la misma página viene la implementación de como se haría )

En todo caso, y para empezar, con las cuatro primeras bifurcaciones ya está bien. Con sólo esas ya llevarás a tu WordPress a un nuevo nivel de velocidad. Pruébalo, verás como no te engaño. Después escríbeme si quieres un comentario contándome en cuánto aumentó el rendimiento de tu tema o páginas webs para que otros se animen a implementarlo.

4 comentarios

Lo he colocado y no se podia acceder al web. Daba error.

¿Te ha pasado antes algo así?

Lo he insertado al principio del fichero functions.php del tema. ¿tiene esto algo que ver?

Gracias de antemano

Hola, Sergi,

Esas líneas llevan asociados 4 archivos, los que vienen en el post, que hay que crear bajo un directorio "functions" en el raíz del tema.

Esos archivos sirven para que los desarrolladores puedan distribuir el código del tema. De esta manera, no fuerzas a WordPress a cargar todo el código, o recursos, cuando no es necesario. Por ejemplo, evitarías que en tu página pública se carguen javascript que sean de la zona administrativa.

Espero que con esta explicación hayas podido solucionar el problema, Sergi

Un saludo

Me lanza un error 500 :-S

Escrito por Diego el 14-11-2016 a las 13:48

Hola, Diego,

¿ Has creado los 4 archivos ?. ¿ Puedes mirar el error.log de APACHE o de tu servidor y decirme qué te sale ?.

Es increíble la cantidad de temas y plugins 'grandes' que no hacen algo tan sencillo como separar el código de front y el back-end. Lo mismo que propones tú lo hago en el fichero principal de machete (http://wordpress.org/plugins/machete) con un simple condicional sobre is_admin() https://github.com/nilovelez/machete/blob/master/machete.php (línea 37)

Hola, Nilo,

Gracias por aportar a este post un ejemplo de uso real. No conocía tu plugin pero espero que ojala tengas mucho éxito con él!

Deja un comentario

Puedes usar Markdown para formatear tu comentario.

Este sitio utiliza cookies propias y de terceros para mejorar tu experiencia con el sitio web. Al continuar con la navegación consideramos que acepta su uso.