Cómo Deshabilitar WordPress Plugins para que no Se Carguen en Páginas y Publicaciones Específicas

Actualizado July 26, 2017

Cuando se trata de rendimiento de WordPress tenemos mucho que decir acerca de los plugins. Cada plugin agrega código PHP que tiene que ser ejecutado, puede incluir scripts y estilos, y algunos pueden ejecutar consultas adicionales en la base de datos. Esto significa que los plugins innecesarios pueden afectar la velocidad de la página y pueden tener un impacto negativo en la experiencia del usuario y el ranking de páginas. Como ejemplo, considere un plugin que crea y muestra formularios personalizados en páginas frontales, como Contact Form 7. Usted normalmente sólo necesita un formulario en una sola página. ¿Realmente desea ejecutar el código de plugin e incluir scripts y estilos en cada página de su sitio web?

En esta publicación, demostraré que puede instalar tantos plugins como necesite (no se vuelva loco por supuesto), y sin embargo hacer que las páginas de WordPress se carguen rápido. Vamos a desactivar plugins de WordPress (que son innecesarios de cargar en entradas y páginas específicas. Esto implicará un proceso de cuatro procesos de cuatro pasos:

  • Escoger los plugins más populares que se adapten a sus necesidades y comparar sus características y efectos con la velocidad de la página.
  • Filtrar y desactivar los plugins innecesarios antes de cargar la página.
  • Optimizar los archivos CSS y JS.
  • Rastrear el rendimiento del sitio.

Exploremos a profundidad.

Tres Reglas Generales a Seguir al Elegir un Plugin

Las siguientes reglas generales pueden ser útiles al elegir un plugin:

  • Instale sólo plugins bien codificados de desarrolladores de confianza: considere instalaciones activas, calificación de usuarios, soporte al cliente, frecuencia de actualización y cualquier información útil proveniente de la comunidad de WordPress.
  • Prefiera plugins escalables: compare plugins similares en términos de rendimiento, haciendo uso de herramientas de desarrollo de navegador y / o servicios online como Google Pagespeed Insights y Pingdom para evaluar el impacto de cada plugin sobre el tiempo de carga de la página.
  • No instale plugins innecesarios: podría ser obvio, pero vale la pena mencionar que nunca debe instalar un plugin que realmente no necesita por razones de seguridad y rendimiento.
El Directorio de Plugins de WordPress proporciona información relevante que siempre debemos tener en cuenta al elegir un plugin

El Directorio de Plugins de WordPress proporciona información relevante que siempre debemos tener en cuenta al elegir un plugin

Una vez que hayamos elegido el plugin más eficiente y popular que haya, podemos avanzar para acelerar nuestro sitio web y obligar a WordPress a cargar un plugin sólo en aquellas páginas donde realmente se necesita.

Un Ejemplo Concreto

Contact Form 7 es un gran plugin que construye y muestra formularios en WordPress. Proporciona un ejemplo perfecto para nuestros propósitos, ya que incluye los siguientes archivos .js en cada página, incluso si la página no contiene un formulario:

  • jquery.form.min.js
  • scripts.js
El panel de Chrome DevTools Network proporciona información detallada sobre las solicitudes de red realizadas cuando se carga una página

El panel de Chrome DevTools Network proporciona información detallada sobre las solicitudes de red realizadas cuando se carga una página

Un plugin puede determinar una pérdida general de eficiencia, pero podemos forzar a WordPress a desactivar selectivamente los plugin dependiendo de la URL solicitada. Si usted es un desarrollador, lea la siguiente sección, en la que explico cómo construir un a mu-plugin que filtre plugins inecesarios. Si usted no es un desarrollador, no dude en saltar a la sección dedicada a plugins que permiten filtrar y organizar plugins.

Cómo Construir un MuPlugin para Deshabilitar Programáticamente los Plugins

Nuestro objetivo es deshabilitar plugins de WordPress (desactivar) en una base por página mediante el filtrado de la lista de plugins activos. Para lograr este objetivo, vamos a construir un mu-plugin, que es un plugin que reside en un sub-folder /wp-content, y se ejecuta antes de cualquier plugin regular. Por lo tanto, vamos a crear un archivo new .php (ejemplo, my-plugin.php) en /wp-content/mu-plugins.

Nuestra primera tarea es verificar la URI de la solicitud. Dado que los mu-plugins se ejecutan antes de que se haya definido cualquier variable is_, no se nos permite usar etiquetas condicionales. En consecuencia, tenemos que analizar la URI de la solicitud y comprobar la ruta URL correspondiente:

$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );

$is_admin = strpos( $request_uri, '/wp-admin/' );

// add filter in front pages only
if( false === $is_admin ){
	add_filter( 'option_active_plugins', 'kinsta_option_active_plugins' );
}

Exploremos este código a profundidad:

  • parse_url devuelve la ruta de la URL solicitada
  • strpos encuentra la posición de la primera aparición de ‘/wp-admin/’, y devuelve falso si no se encuentra la cadena. La variable $is_admin almacena el valor regresado
  • Si la URL de la solicitud no contiene ‘/wp-admin/’, entonces añadimos el filtro option_active_plugins .

La condición impide que el filtro se ejecute en el panel de administración, para que podamos acceder con seguridad a las páginas de configuración del plugin. option_active_plugins pertenece al grupo de filtros option_$option_name . Estos hooks permiten filtrar cualquier opción después de que se haya recuperado de la base de datos. Dado que todos los plugins activos se almacenan en la tabla wp_options donde el campo option_value es active_plugins, el filtro option_active_plugins  proporciona una forma de activar o desactivar programáticamente los plugins.

Dicho esto, permite definir la función de devolución de llamada:

function kinsta_option_active_plugins( $plugins ){
	global $request_uri;
	$is_contact_page = strpos( $request_uri, '/contact/' );

	$unnecessary_plugins = array();

	// conditions
	// if this is not contact page
	// deactivate plugin
	if( false === $is_contact_page ){
		$unnecessary_plugins[] = 'contact-form-7/wp-contact-form-7.php';
	}

	foreach ( $unnecessary_plugins as $plugin ) {
		$k = array_search( $plugin, $plugins );
		if( false !== $k ){
			unset( $plugins[$k] );
		}
	}
	return $plugins;
}

Aquí está lo que está sucediendo:

  • Primero, pasamos a la función una matriz de plugins activos.
  • La función comprueba si la ruta URL de la solicitud contiene la cadena ‘/contact/’. Si no la tiene, strpos regresa falso, y nosotros podemos verificar una nueva condición.
  • Si la URL actual de la solicitud apunta a una página distinta de la página de contacto, entonces, agregamos el plugin Contact Form 7 a una serie de plugins innecesarios.
  • El ciclo foreach  itera sobre los elementos de la función $unnecessary_plugins. Si el plugin actual es un plugin activo, la función unset  la retira de la matriz $plugins .
  • La función devuelve la actualización de la matriz $plugins .

Usted puede descargar el código completo de este plugin desde Git.

Ahora puede subir el plugin a la carpeta mu-plugins e inspeccionar cualquier página de su sitio web. Debería encontrar los activos de CF7 sólo en la página de contactos. El mu-plugin puede ser altamente personalizado añadiendo más condiciones y comprobando más URIs, pero cada condición tiene que ser añadido manualmente al código, y a largo plazo este sencillo mu-plugin podría ser difícil de mantener.

Plugins que Filtran Plugins

Como alternativa, podemos ver una serie de buenos plugins que nos permiten agregar filtros que se pueden gestionar desde el panel de administración de WordPress.

Plugin Load Filter

Plugin Load Filter es una opción gratuita para los usuarios de WordPress que necesitan filtrar plugins en varias condiciones.

Plugin Load Filter permite filtrar plugins en el panel de administración, así como en las páginas del sitio

Plugin Load Filter permite filtrar plugins en el panel de administración, así como en las páginas del sitio

Actualmente, es compatible con las siguientes características:

  • Formatos de publicaciones
  • Tipos de publicaciones personalizadas
  • Modulos jetpack
  • Embeber Contenido
  • Palabra clave AMP
  • Filtros de URL

Una vez que se haya activado un filtro, el admin puede especificar dónde en el sitio debe aplicarse, como se muestra en la siguiente imagen.

Una vez activado el filtro, el usuario administrador puede determinar el tipo de página en la que debe aplicarse

Una vez activado el filtro, el usuario administrador puede determinar el tipo de página en la que debe aplicarse

Plugin Organizer

Plugin Organizer es un plugin más completo que permite a los administradores del sitio:

  • Desactivar selectivamente los plugins activos por tipo de mensaje y URL de solicitud
  • Crear grupos de plugins
  • Cambiar el orden de carga del plugin
Página de Ajustes de Plugin Organizer

Página de Ajustes de Plugin Organizer

La página de las opciones de Global Plugins proporciona una función de arrastrar y soltar que permite al usuario admin deshabilitar globalmente los plugins, evitando que WordPress ejecute uno o más plugins en cualquier parte del sitio, a menos que se especifique de forma diferente para publicaciones o páginas individuales. La misma característica está disponible para la página de búsqueda y los tipos de publicación.

CF7 ha sido deshabilitado globalmente

CF7 ha sido deshabilitado globalmente

El plugin agrega una metabox en la pantalla de edición de publicaciones para que el administrador pueda anular la configuración global y la del tipo de la publicación. Esta característica también puede ser activada para los tipos de publicaciones, marcando el elemento correspondiente en la pantalla Configuración General. Otras características se refieren a agrupar y ordenar plugins. Puede encontrar más información en documentación online.

perfmatters Plugin

Un enfoque parcialmente diferente tiene el perfmatters plugin. Es una alternativa premium que permite que el admin del sitio cargue temas y activos de plugins selectivamente dependiendo de la URL o tipo de post personalizado. Es un instrumento genial para la optimización de ambos: plugin y tema. De hecho ¡es desarrollado por un miembro del equipo de Kinsta!

 

Deshabilitar scripts

Menú para deshabilitar scripts

Es una herramienta muy potente e incrementará la velocidad de su sitio WordPress (especialmente su página principal) drásticamente. A continuación unos ejemplos para qué se puede utilizar el plugin:

  • Plugins de compartición por redes sociales debería ser cargado en sus publicaciones. Puede deshabilitarlos con facilidad en todos los lugares y cargarlos solo en sus tipos de post o incluso tipos de post personalizados.
  • El plugin popular Contact Form 7 se carga en todas las páginas y publicaciones. Puede deshabilitarlos en todos los lugares con un solo clic y habilitar exclusivamente en su página de contacto.

Puede ver una reseña de perfmatters, disminuyó su tiempo de carga total por un 20.2%. ¡En su página principal redujeron el número de solicitudes HTTP de 46 a 30! El tamaño de la página retrocedió de 506.3 KB to 451.6 KB.

Test de velocidad con perfmatters

Test de velocidad con perfmatters plugin

Cómo Rastrear el Rendimiento: Las Dev Tools del Navegador

Un paso fundamental en la carretera para optimizar el rendimiento es la medición del tiempo de carga. Tenemos varios plugins y herramientas en línea que podemos usar para realizar un seguimiento del rendimiento del sitio, como Google Pagespeed Insights y Pingdom. Pero en primer lugar, podemos utilizar las herramientas de desarrollo del navegador, que proporcionan una gran cantidad de información significativa.

La imagen muestra el panel Red de Herramientas de desarrolladores de Chrome

La imagen muestra el panel Red de Herramientas de desarrolladores de Chrome

Cada inspector de navegador tiene un panel de Red que muestra una lista de solicitudes de red e información relacionada. Siga estos enlaces para obtener documentación detallada:

Firefox Network Monitor proporciona un panel adicional que permite evaluar el tiempo que tarda el navegador en descargar los activos de la página

Firefox Network Monitor proporciona un panel adicional que permite evaluar el tiempo que tarda el navegador en descargar los activos de la página

En una instalación de WordPress con dieciocho plugins activos, hemos inspeccionado varias páginas de correos con Firefox Dev Tools. Primero hemos medido la velocidad de la página y hemos enumerado los recursos solicitados antes de instalar cualquier plugin de filtrado. La siguiente imagen muestra la salida de la herramienta de análisis de rendimiento del monitor de Firefox Network.

monitoreo de red 1

El monitor de Red proporciona los siguientes resultados (cache vacía):

  • tamaño: 709.77 Kb
  • tiempo de carga: 6.67 segundos
  • solicitudes: 30

A continuación, hemos instalado Plugin Organizer para evitar que WordPress ejecute el plugin CF7. El gráfico circular cambia un poco.

monitoreo de red 2

Ahora la página se carga más rápido (cache vacía):

  • tamaño: 665.85 Kb
  • tiempo de carga: 5.08 segundos
  • solicitudes: 27

A continuación, hemos desactivado dieciséis plugins innecesarios y la siguiente imagen muestra cómo hemos mejorado el rendimiento de la página.

monitoreo de red 3

Después de deshabilitar todos los plugins innecesarios, la cache de navegador vacía del monitor de Red devuelve los datos siguientes:

  • tamaño: 440.15 Kb
  • tiempo de carga: 3.14 segundos
  • solicitudes: 21

Esta prueba demuestra cómo los plugins pueden afectar considerablemente el rendimiento de la página y cuánto podemos aumentar la velocidad de la página con un filtro de plugin.

Pero podemos mejorar aún más el rendimiento gracias a otra herramienta de optimización. Autoptimize es un plugin gratuito que concatena, minimiza y comprime scripts y estilos, mueve los estilos a la cabecera de la página y los scripts al pie de página (lea más sobre el plugin de esta publicación en Cómo Eliminar Render-Blocking Javascript y CSS). Active el plugin, vuelva a cargar e inspeccione la página de nuevo.

monitoreo de red 4

Gracias a Autoptimize, hemos alcanzado un alto nivel de optimización (cache de navegador vacía):

  • tamaño: 474.56 Kb
  • tiempo de carga: 1.99 segundos
  • solicitudes: 13

Finalmente, podemos comparar los resultados de nuestras pruebas. El tamaño del recurso se ha reducido de 235Kb, el tiempo de carga se redujo de 6.67 segundos a 1.99 segundos, y el número de solicitudes HTTP disminuyó de 30 a 13.

Resumiendo

Si construye sus propios scripts o instala herramientas de terceros, organizar y filtrar plugins es una buena práctica que siempre debe considerar cuando se trata de la optimización del rendimiento. Pero aprender a desactivar plugins de WordPress es sólo una entre muchas otras técnicas destinadas a aumentar la velocidad del sitio, y aquí hay una lista de guías y tutoriales relacionados con el rendimiento del sitio que vale la pena leer:

Este artículo fue escrito por Carlo Daniele

Carlo es un freelance trabajando como desarrollador y diseñador front-end. Al escribir artículos y tutoriales Carlo maneja principalmente estándares de web pero cuando juega con sitios web su mejor compañero es WordPress.

Artículos relacionados

Deja un comentario

kinsta newsletter

¿Utilizas WordPress?

¡Únete a más de 20.000 lectores que ya reciben nuestro newsletter semanal GRATUITO con consejos de WordPress sobre cómo generar más tráfico e ingresos para tu negocio!

You have Successfully Subscribed!

Send this to a friend