Los 3 plugins de WordPress que sí usamos en producción

No son 20 plugins: son 3. El stack que una software house mantiene en producción: Yoast, Redis Object Cache y ACF Pro, con config real y sin bloat.

Tres plugins sostienen un sitio WordPress profesional: Yoast SEO (capa de SEO), Redis Object Cache (rendimiento de servidor) y Advanced Custom Fields Pro (contenido estructurado). Uno por capa crítica. El resto es opcional.

Nuestro trío fijo: Yoast SEO para SEO, Redis Object Cache para rendimiento de servidor y ACF Pro para contenido estructurado. Un plugin por capa crítica — el resto es bloat hasta que se demuestre lo contrario.

Toda lista de “plugins indispensables” que has leído tenía 20, 25, 31 ítems. La nuestra tiene tres. No porque falte qué instalar, sino porque cada plugin extra es peso: más código que cargar, más consultas a la base de datos, una cosa más que puede romperse en una actualización. Esta guía muestra el stack que una software house mantiene de verdad en producción — con la config real de cada uno — y por qué la cuenta se detiene en tres.

Por qué 3, y no 30

El exceso de plugins es una de las principales causas de un sitio lento o roto. No es opinión: cada plugin activo añade PHP que interpretar, hooks que disparar y, casi siempre, consultas a la base de datos en cada carga. Veinte plugins mal elegidos tumban un sitio más rápido que un pico de tráfico — y el patrón de los errores más comunes de WordPress casi siempre empieza con un plugin en conflicto.

La regla que seguimos es simple: un plugin por capa crítica, y solo cuando la capa existe de verdad.

  • El SEO es una capa crítica en casi todo sitio → entra Yoast.
  • El rendimiento de base de datos es crítico en sitios dinámicos → entra Redis Object Cache.
  • El contenido estructurado es crítico en cualquier sitio que no sea un folleto → entra ACF Pro.

Lo que no es una capa crítica — o lo que se resuelve mejor fuera de WordPress — no se convierte en plugin fijo. Esa es la diferencia entre nuestra lista de tres y las listas genéricas de 20 a 31 ítems que optimizan por número, no por un sitio sano.

Yoast SEO — la capa de SEO

Cuándo entra

Yoast entra en prácticamente todo proyecto que necesita ser encontrado en Google. Resuelve lo básico bien hecho: título y meta description por página, control de indexación (noindex/nofollow), generación de sitemap XML, canonical, breadcrumbs y el schema (datos estructurados) que ayuda al sitio a aparecer mejor en los resultados. El análisis de legibilidad y de foco de palabra clave es útil como checklist editorial — no como dogma.

El punto: no instalamos Yoast por las lucecitas verdes. Lo instalamos porque controla, de forma centralizada, la salida de SEO técnico del sitio. Eso es infraestructura, no adorno.

Config real

La mitad del valor de Yoast está en apagar lo que estorba y fijar defaults sensatos. Lo hacemos por código, en un mu-plugin (must-use, cargado siempre y fuera del alcance del cliente), en vez de depender de clics en el panel:

<?php
/**
 * Plugin Name: Pixelize — Yoast Defaults
 * Description: Defaults de SEO travados por código, não por clique.
 */

// Remove o comentário "generated by Yoast" no HTML — ruído inútil.
add_filter( 'wpseo_debug_markers', '__return_false' );

// noindex em arquivos de autor num site de autor único (conteúdo duplicado).
add_filter( 'wpseo_should_index_links', '__return_true' );

// Remove taxonomias sem valor de busca do sitemap (ex.: post_format).
add_filter( 'wpseo_sitemap_exclude_taxonomy', function ( $excluded, $taxonomy ) {
    return in_array( $taxonomy, array( 'post_format' ), true ) ? true : $excluded;
}, 10, 2 );

// Ajusta o título de forma programática quando necessário.
add_filter( 'wpseo_title', function ( $title ) {
    return $title; // ponto de extensão previsível — o motivo de escolhermos Yoast.
} );

El detalle que importa: la API de filtros de Yoast es previsible y estable entre versiones. Un mu-plugin así sigue funcionando tras años de updates — y eso es exactamente lo que una agencia necesita para mantener decenas de sitios sin retrabajo.

Un aparte honesto: Yoast vs Rank Math

No somos fanáticos. Rank Math es un gran plugin de SEO — tiene un plan gratuito más generoso (funciones que Yoast solo entrega en premium), es ligeramente más ligero y trae una interfaz moderna. Si estás empezando un sitio desde cero y quieres lo máximo gratis, es una elección defendible.

Aun así, la casa estandariza en Yoast por tres motivos prácticos:

  1. Estabilidad. Años en el mercado, ciclo de release conservador, menos sorpresas en la actualización — lo que importa cuando mantienes muchos sitios.
  2. API previsible. Los filtros y hooks están documentados y cambian poco. Nuestras personalizaciones sobreviven a los updates.
  3. Legibilidad y consistencia. El flujo editorial es el mismo en todos los proyectos, lo que reduce el coste de formar al equipo y al cliente.

Es postura, no religión. A un cliente que ya corre Rank Math bien configurado no lo migramos por migrar — la migración tendría coste y la ganancia sería cero. Un plugin de SEO por sitio; nunca los dos.

Redis Object Cache — rendimiento de servidor

Object cache ≠ page cache

Aquí vive la confusión más común. Son cosas distintas:

El page cache guarda el HTML ya renderizado de una página y sirve ese archivo estático a los visitantes anónimos. Rápido, pero solo funciona cuando la página es igual para todos.

El object cache guarda en memoria el resultado de las consultas a la base de datos (la salida de WP_Object_Cache). Acelera páginas dinámicas — las que el page cache no puede servir estáticas.

Sin un object cache persistente, WordPress reconstruye las mismas consultas a la base de datos en cada petición. Con un object cache persistente (Redis o Memcached), el resultado queda en memoria y se reutiliza entre visitas. No es lo mismo que el page cache — es la capa de abajo, la base de datos.

Cuándo ayuda de verdad

Redis Object Cache brilla exactamente donde el page cache es inútil: páginas dinámicas por naturaleza.

  • WooCommerce: carrito, checkout, “mi cuenta”, páginas de producto con stock y precio dinámicos. Nada de eso puede servirse estático — el object cache reduce drásticamente la carga en la base de datos.
  • Usuarios logados: cualquier sitio con área de miembro, panel o contenido personalizado. Cada visita logada golpea la base de datos; el object cache absorbe lo repetido.
  • wp-admin: el propio panel administrativo se vuelve más rápido, algo que el equipo del cliente siente cada día.

Dónde es marginal: un blog institucional simple, casi todo el tráfico anónimo, ya servido por un buen page cache. Ahí la ganancia existe, pero es pequeña — el page cache ya resuelve la mayor parte. Vale la pena medir el hit rate antes de decir que resolvió algo.

Config real

Primero, el prerrequisito no negociable: Redis tiene que estar instalado y en ejecución en el servidor. El plugin es solo el puente entre WordPress y Redis. Sin el servicio, no hay ganancia alguna.

Con Redis en el servidor y el plugin instalado, apunta la conexión en wp-config.php:

// wp-config.php — antes de "That's all, stop editing!"
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_TIMEOUT', 1 );
define( 'WP_REDIS_READ_TIMEOUT', 1 );

// Isola o cache deste site — evita colisão de chaves em servidor compartilhado.
define( 'WP_CACHE_KEY_SALT', 'pixelize_cliente_prod:' );

Después, activa el drop-in de object cache. Con WP-CLI es una línea:

# Verifica se o Redis responde e ativa o object cache persistente
wp redis status
wp redis enable

# Confirma o hit rate depois de algum tráfego real
wp redis status

wp redis enable crea el object-cache.php en wp-content/, el drop-in que conecta WP_Object_Cache con Redis. A partir de ahí, mide: un hit rate alto confirma que la caché está atrapando. Si es bajo, o el sitio es demasiado anónimo (el page cache ya bastaría) o algo está limpiando la caché demasiado pronto.

Advanced Custom Fields Pro — contenido estructurado

Uso

ACF Pro resuelve el problema más común de todo sitio de contenido: datos que no caben en el editor estándar. Precio, coordenadas de mapa, galería, especificaciones de producto, campos de un inmueble, datos de una ficha técnica. En vez de forzar todo en un campo de texto libre — frágil e imposible de mantener —, ACF crea campos estructurados y nombrados, cómodos de editar y renderizados con control total en el tema.

Es la diferencia entre contenido organizado (que consultas, filtras y reutilizas) y un bloque de texto que nadie consigue evolucionar.

ACF Blocks — bloque Gutenberg nativo en PHP

Aquí ACF se conecta con nuestra postura de stack. Somos equipo de Gutenberg, no de Elementor: el editor nativo de WordPress genera HTML limpio, no ata al cliente a un maquetador propietario y no carga la página con capas de CSS/JS innecesarias.

El detalle que marca la diferencia: los ACF Blocks permiten crear bloques Gutenberg nativos escribiendo PHP, sin tocar React. Para una agencia con una base fuerte en PHP, eso significa entregar bloques personalizados de verdad — que aparecen en el editor nativo, con preview real — en una fracción del tiempo de un bloque React tradicional.

Config real

Un ACF Block moderno se registra vía block.json con callback de render en PHP:

// functions.php ou um mu-plugin do tema
add_action( 'init', function () {
    // Registra o bloco a partir do block.json na pasta do tema.
    register_block_type( get_stylesheet_directory() . '/blocks/destaque' );
} );
// blocks/destaque/block.json
{
  "apiVersion": 3,
  "name": "pixelize/destaque",
  "title": "Destaque",
  "category": "design",
  "icon": "star-filled",
  "acf": {
    "mode": "preview",
    "renderTemplate": "render.php"
  },
  "supports": { "align": true, "mode": false }
}
// blocks/destaque/render.php — renderização 100% em PHP, sem React.
<div class="bloco-destaque">
    <h2><?php echo esc_html( get_field( 'titulo' ) ); ?></h2>
    <p><?php echo esc_html( get_field( 'texto' ) ); ?></p>
</div>

Bloque nativo de Gutenberg, editable en el editor estándar, renderizado con PHP que cualquier dev del equipo entiende y mantiene. Sin cadena de build de React, sin maquetador propietario.

Activo del cliente, no lock-in

El miedo legítimo con cualquier herramienta de contenido es el aprisionamiento. Con ACF, la respuesta es honesta: los campos y el contenido viven en la base de datos del propio cliente. Los datos son un activo suyo — siguen accesibles en las tablas de WordPress, exportables, migrables.

Dependes del plugin para editar y renderizar los campos con comodidad, es cierto. Pero eso es muy distinto del lock-in visual de un maquetador, donde el contenido queda incrustado en shortcodes y markup propietarios que se vuelven basura el día que el maquetador se va. Con ACF, el peor escenario es reescribir la capa de visualización — el contenido en sí nunca estuvo atrapado.

El runner-up y los que quedaron fuera

WP Rocket — condicional, no fijo

WP Rocket es el mejor plugin de page cache del mercado y nuestro runner-up. No entra en el trío fijo porque la capa de page cache muchas veces ya está resuelta en el servidor. El caso más claro: en hosting LiteSpeed, LiteSpeed Cache es gratuito e integrado al servidor web — instalar WP Rocket encima sería pagar por algo que la infraestructura ya entrega.

La regla: si el servidor no ofrece page cache nativo, WP Rocket entra como cuarto plugin. Si lo ofrece (LiteSpeed, o caché de página a nivel del host), WP Rocket no es necesario. Una capa resuelta fuera de WordPress es una capa que no se convierte en plugin.

Por qué Wordfence, UpdraftPlus y Query Monitor no entran

Tres sospechosos habituales de toda lista genérica que, deliberadamente, quedan fuera de nuestro trío:

  • Wordfence (seguridad): la seguridad de verdad se resuelve mejor en la capa de host e infraestructura — firewall en el servidor, WAF, actualizaciones gestionadas, permisos de archivo correctos. Un plugin de firewall corre dentro de PHP, después de que la petición ya llegó; la protección más fuerte está antes de eso. Útil en algunos contextos, indispensable como plugin fijo no lo es.
  • UpdraftPlus (backup): el backup es indispensable como función, no como plugin. Los snapshots a nivel de servidor y los backups gestionados por el host son más fiables y no pesan en el PHP del sitio. Preferimos resolver el backup fuera de WordPress siempre que el hosting lo permite.
  • Query Monitor (debug): es una herramienta excelente — de desarrollo y staging. En producción no debe quedar activa: añade overhead y expone detalles internos. Activa cuando necesitamos investigar, desactivada enseguida. Una herramienta de dev no es un plugin de producción.

Fíjate en el hilo común: ninguno de estos es inútil. Simplemente resuelven capas que o viven mejor fuera de WordPress (seguridad, backup) o no pertenecen a producción (debug). Por eso el trío fijo es fijo — y el resto es situacional.

Cuántos plugins instalar, al final

No existe número mágico. Lo que decide no es la cantidad, es la calidad y la necesidad real de cada plugin. Como referencia práctica: los sitios pequeños suelen funcionar bien con unos 5 a 10 plugins, y ~20 es un techo práctico antes de que el sitio se vuelva un problema de mantenimiento. Cada plugin instalado es un coste de rendimiento sumado a una superficie de mantenimiento y seguridad — instala por necesidad comprobada, nunca por costumbre.

Nuestro trío — Yoast, Redis Object Cache, ACF Pro — es la base porque cada uno resuelve una capa crítica e insustituible. A partir de ahí, cada añadido debe justificarse: qué capa resuelve, y por qué no puede resolverse fuera de WordPress.

Un sitio lento o roto casi nunca es falta de plugins. Es exceso — y el patrón de errores de WordPress lo confirma cada día. Menos plugins, mejor elegidos, es la decisión de rendimiento más barata que existe. Y mantener ese recorte a lo largo del tiempo es parte de lo que hacemos en mantenimiento de WordPress — igual que en todo proyecto de desarrollo WordPress que entregamos.

Tres plugins. El resto es bloat hasta que se demuestre lo contrario.

Preguntas frecuentes

¿Cuántos plugins debo instalar en WordPress?

No hay número mágico: lo que pesa es la calidad, no la cantidad. En la práctica, los sitios pequeños funcionan bien con unos 5 a 10 plugins, y ~20 suele ser un techo práctico antes de convertirse en un riesgo de mantenimiento. Cada plugin añade un coste de rendimiento y una superficie de seguridad, así que instala por necesidad comprobada, no por costumbre.

¿Cuál es la diferencia entre object cache y page cache?

El page cache sirve HTML estático ya listo a los visitantes anónimos — ideal para páginas iguales para todos. El object cache guarda en memoria el resultado de las consultas a la base de datos, acelerando páginas dinámicas: usuarios logados, wp-admin y el carrito de WooCommerce, donde el page cache no entra. Son capas complementarias, no sustitutas.

¿Necesito realmente Redis para usar object cache?

Para un object cache persistente sí: Redis (o Memcached) tiene que estar instalado y en ejecución en el servidor. Sin él, WordPress solo usa caché en memoria por petición, que no persiste entre visitas. Si tu hosting no ofrece Redis, la ganancia del plugin Redis Object Cache es nula — confírmalo antes de instalar.

¿Yoast SEO o Rank Math: cuál es mejor?

Ambos son plugins de SEO sólidos. Elegimos Yoast por su estabilidad y por una API de filtros previsible, que facilita el mantenimiento a largo plazo. Rank Math tiene un plan gratuito más generoso y es ligeramente más ligero. Es cuestión de postura, no de fanatismo: a un cliente que ya corre Rank Math bien configurado no lo cambiamos por cambiar.

¿Usar ACF genera lock-in en mi sitio?

Los campos y el contenido de ACF viven en la base de datos del propio cliente — los datos son un activo tuyo, no algo atado al proveedor. Dependes del plugin para renderizar y editar los campos con comodidad, pero el contenido sigue accesible en la base de datos. Eso es muy distinto del lock-in visual de un maquetador.

¿Backup y seguridad no son plugins indispensables?

Son indispensables como función, no necesariamente como plugin. Backup y seguridad suelen resolverse mejor en la capa de host e infraestructura — snapshots del servidor, firewall, actualizaciones gestionadas. Por eso no entran en nuestro trío fijo: preferimos resolverlos fuera de WordPress siempre que el hosting lo permita.