¿Cuál es la secuencia de carga de WordPress?

Ya sea que quieras optimizar tu web o estés desarrollando un plugin o tema, o simplemente haciendo modificaciones y añadiendo plugins, si quieres controlar el entorno de WordPress es importantísimo que conozcas la secuencia de carga de cada uno de los elementos de WordPress.

¿Lo has pensado alguna vez? ¿Cuál es la secuencia en la que WordPress carga sus múltiples códigos, plugins, funciones, constantes, etc.?

Pues es vital conocer cómo funciona WordPress entre bambalinas por muchos motivos, sobre todo si estás haciendo WPO, pero también en muchas otra situaciones.

¿Lo vemos?

Carga de wp-config.php

Es el primer archivo que carga WordPress por razones obvias.

El archivo wp-config.php es el archivo de configuración de WordPress. Establece las variables globales de cualquier sitio WordPress y contiene la información de la base de datos con la que WordPress debe comunicarse para recuperar o guardar información.

Si quieres conocer todo sobre el archivo wp-config.php revisa este artículo.

Establece las constantes por defecto

Una vez que ha cargado el archivo wp-config.php WordPress pasa a las constantes por defecto.

Me refiero a información como la ubicación de subida de archivos por defecto, los tamaños máximos de archivos y otras constantes importantes por defecto de WordPress que se definen en el archivo wp-config.php.

De nuevo, revisa este artículo sobre wp-config.php, y este otro para conocer todas las constantes posibles.

Carga el archivo advanced-cache.php

Si existe el archivo advanced-cache.php en tu sitio entonces es lo siguiente que cargará WordPress.

Este es un archivo de los conocidos como plugins dependientes, y lo utilizan muchos de los plugins de caché más populares.

Si tu instalación usa este archivo lo verás ahí, en la lista de plugins dependientes.

Tiene todo el sentido que sea uno de los primeros archivos a cargar por WordPress por su influencia en el rendimiento y carga de tu sitio, ya que a través de él se gestiona la caché.

Carga el archivo wp-content/db.php

WordPress permite a los desarrolladores crear sus propias capas en la base de datos y cargarlas en el archivo db.php, situado dentro de la carpeta wp-content.

Lo usan habitualmente los plugins de caché para mejorar el rendimiento de la base de datos. Así que si hay uno en tu instalación entonces WordPress lo cargará en este momento.

Conecta con MySQL y elige la base de datos

Una vez que WordPress tiene suficiente información ya puede seguir, y ahora toca conectarse con el servidor MySQL y elegir la base de datos donde está tu información. Y lo hará con lo que encontró en el archivo wp-config.php.

Si, por algún motivo, WordPress no pudiese conectar con la base de datos y mostrarse el famoso aviso de “Error al establecer conexión con la base de datostendrás que revisar este fantástico artículo sobre los principales errores de WordPress y su solución.

Si todo va como debe seguimos adelante.

Carga el archivo object-cache.php o wp-includes/cache.php

Ahora WordPress buscará el archivo object-cache.php, y si no existe cargará el archivo wp-includes/cache.php.

El archivo object-cache.php lo usan plugins de caché tan populares como SG Optimizer y otros.

Carga el archivo wp-content/sunrise.php

Si tienes una instalación multisitio entonces a WordPress le toca buscar si existe el archivo sunrise.php dentro de la carpeta wp-content.

Carga la biblioteca del sistema de localización de idioma

Ahora a WordPress le toca cargar la biblioteca l10n.php que está dentro de la carpeta wp-includes. Este archivo carga el sistema de idiomas de WordPress, carga las traducciones, define el lenguaje local, etc.

Carga los plugins de multisitio

Si la instalación WordPress es una red multisitio entonces WordPress cargará en este momento los plugins exclusivos para multisitio.

Carga la acción ‘muplugins_loaded’

A continuación WordPress carga la acción muplugins_loaded. Esta acción solo está disponible para plugins activados para la red de una instalación multisitio.

Carga los plugins activos

Llegó el momento en que WordPress cargue todos los plugins activos de tu sitio. Lo hace mirando en la línea llamada active_plugins de la tabla options de la base de datos de tu WordPress.

Con esto WordPress solo carga los plugins activos, ignorando los que están instalados pero no activos.

Carga el archivo pluggable.php

El archivo pluggable.php contiene funciones que pueden redefinir algunos plugins para WordPress, así que en este momento WordPress mirará dentro de este archivo por si hay algo que ya está definido por algún plugin.

Si no hay nada definido por algún plugin (recuerda que los cargó anteriormente, en el paso previo) entonces WordPress definirá sus propias funciones de este archivo.

Carga la acción ‘plugins_loaded’

En este momento WordPress ya puede ejecutar la acción ‘plugins_loaded‘, que permite a los desarrolladores enganchar sus funciones para que se ejecuten después de que se hayan cargado todos los plugins activos.

Carga las reglas de ‘rewrite’

Ya puede WordPress cargar las reglas de rewrite para saber cómo crear las URLs de tu sitio.

Carga $wp_query, $wp_rewrite, $wp

En este punto WordPress carga los siguientes objetos:

$wp_query: La instancia global que contiene la clase WP_Query. Le dice a WordPress qué contenido es necesario en formato de petición típica de WordPress.

$wp_rewrite: Esta es la instancia global que contiene la clase WP_Rewrite. Ahí están tus reglas de rewrite y las funciones que le dicen a WordPress qué URL debe mostrar para mostrar el contenido solicitado.

$wp: La instancia global de la clase WP que contiene las funciones que analizarán tu petición y realizarán la petición (query) principal.

Carga la acción ‘setup_theme’

Ahora WordPress ejecutará la acción ‘setup_theme‘. Esta acción se ejecuta antes de que WordPress cargue tu tema activo.

Carga el archivo functions.php del tema hijo

Como ya sabrás, el archivo functions.php actúa como si fuese un plugin, y se usa en los temas WordPress para añadir funcionalidades específicas para tu web.

Si usas un tema hijo en este momento WordPress carga su archivo functions.php.

Por supuesto, si no encuentra el archivo en el tema hijo WordPress cargará el archivo functions.php del tema activo.

Carga el archivo functions.php del tema padre

Si, como hemos visto antes, usas un tema hijo, tras cargar su archivo functions.php, a continuación cargará el archivo functions.php del tema padre para cargar todo lo que no tenga el del tema hijo.

Carga la acción ‘after_setup_theme’

Esta acción se ejecuta después de que WordPress haya establecido el tema activo y cargadas sus funciones. Es la primera acción disponible en los temas.

Establece el objeto del usuario actual

En este momento WordPress carga el objeto del usuario actual, que permite a WordPress gestionar la petición aplicando las reglas de perfiles y capacidades de usuarios.

Carga la acción ‘init’

Como, llegados a este punto, WordPress ya ha cargado toda la información crucial que necesita puede lanzar la acción ‘init‘.

Esta acción permite a los desarrolladores añadir los códigos que necesiten ejecutar una vez que WordPress haya cargado toda la información que hemos mencionado antes.

Carga la acción ‘widget_init’

La acción widget_init permite a los desarrolladores registrar los widgets y ejecutar los códigos que necesiten que se carguen en este momento.

Ejecuta wp()

WordPress ahora llama a la función wp(), situada en el archivo wp-includes/functions.php. Esta función configura las globales de petición $wp, $wp_query, $wp_the_query y luego hace una petición a $wp->main.

Analiza la petición

Ahora que WordPress tiene toda la información que necesita para analizar la petición de usuario empieza a comprobar las reglas de rewrite para adecuarlas a las peticiones de usuario.

A continuación ejecuta los filtros de peticiones variables, ganchos de petición de acciones y envía la petición a la cabecera.

Ejecuta la petición (query)

Si ningún contenido se ajusta a la petición entonces WordPress establece la variable is_404.

En caso contrario WordPress empezará a cargar las variables de petición.

  1. Primero ejecutará WP_Query->get_posts().
  2. A continuación lanza la acción DO_ACTION_REF_ARRAY 'pre_get_posts' con el objeto WP_Query.
  3. Ahora WordPress ejecutará apply_filters para vaciar la petición y ejecutar algunas comprobaciones finales.
  4. Luego recupera los contenidos de la base de datos y aplica los filtros posts_results y the_posts.
  5. La petición termina con WordPress mostrando los contenidos.

Carga la acción ‘template_redirect’

A continuación, WordPress ejecutará la acción template_redirect. Este gancho se ejecuta justo antes de que WordPress determine qué plantilla cargar.

Carga la plantilla del feed

Si el contenido solicitado es un feed RSS entonces WordPress carga la plantilla del feed.

Carga la plantilla

Ahora WordPress buscará el archivo de plantilla a partir de la jerarquía de WordPress y, a continuación, carga la plantilla que suela contener el loop de WordPress.

Ejecuta la acción ‘shutdown’

Justo antes de terminar de ejecutar todo el PHP, WordPress lanza la última acción, llamada shutdown.

A partir de aquí WordPress deja de trabajar. Ya ha ejecutado el código y generado la página web solicitada por el usuario.

A partir de ahora el servidor de tu alojamiento responde a la petición del usuario enviándole la página web generada por WordPress.

Esta página contendrá código HTML, CSS y JavaScript, que le dice al navegador del usuario qué y cómo mostrarlo en la pantalla de su dispositivo.


¿A que ha sido interesante?

Toda una aventura ¿verdad?

Y lo más alucinante de todo es que toda esta secuencia ocurre en milisegundos. Luego dependerá de si tienes un buen hosting WordPress para que tu página cargue rápidamente, a ser posible en menos de 2 segundos.

En cualquier caso espero que te haya resultado instructivo, pues siempre es bueno saber estas cosas, que nuncas sabes cuando las vas a necesitar.

Si desarrollas plugins o temas es importante que lo conozcas, para saber en qué momento, cómo y desde dónde cargar tus códigos.

Si eres consultor te ayudará – como me ha servido a mi en multitud de ocasiones – a detectar en qué punto ocurren ciertos fallos y por dónde empezar a buscar, o a qué tecla tocar y en qué lugar y momento para mejorar situaciones de carga de WordPress.

Y siempre es bueno saber qué pasa en la sala de máquinas de nuestra web, cuál es la magia que hace que todo funcione en WordPress y por qué.

Valora este artículo para mejorar la calidad del blog ...

FlojitoNo está malEstá bienMe ha servidoFantástico (9 votos, promedio: 5,00 de 5)
Cargando…

Autor: Fernando

Fernando Tellado, apasionado de WordPress, profesor, consultor y ponente. Maquero cansino, padre de tres hijos y de una perrita Beagle, Bilbaíno de nacimiento, Español de corazón y ciudadano de donde me quieran.

Autor del libro WordPress – La tela de la araña. Mi blog personal es Navegando con red, donde he crecido como escritor en la red y ofrezco mis visiones acerca de la Web 2.0 y la blogosfera.

Comparte esta entrada en
468 ad

LOS BURÓCRATAS DE LA UE ME EXIGEN QUE TE DIGA QUE SI VISITAS AYUDA WORDPRESS PUEDES RECIBIR ALGUNA COOKIE. AQUÍ NO HAY COOKIES DE PUBLICIDAD, COMO LAS QUE SI TE DEJAN GOOGLE, AMAZÓN Y MONTÓN DE SITIOS, SIN AVISAR, PERO EL QUE TE TENGO QUE AVISAR SOY YO. LAS COOKIES QUE TE DEJA AYUDA WORDPRESS SON PARA FACILITARTE LA NAVEGACIÓN, COMPARTIR Y COMENTAR. SI NO QUIERES RECIBIR COOKIES PUEDES NAVEGAR EN MODO PRIVADO, ABANDONAR ESTE SITIO Y PERDERTE EL CONTENIDO GRATIS QUE COMPARTO CADA DÍA SOBRE WORDPRESS O IRTE A UNA ISLA DESIERTA PARA VIVIR AISLADO DEL MUNDO, ESO SÍ, SIN COOKIES. O SINO, SIMPLEMENTE CIERRA ESTA VENTANA COÑAZO Y SIGUE DISFRUTANDO DEL BLOG. SI TIENES CURIOSIDAD SOBRE ESTO DE LAS COOKIES TE DEJO UN ENLACE >> MÁS INFORMACIÓN

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar