WordPress Hosting

mecanico optimizando wordpress

Todas las funcionalidades de WordPress que puedes desactivar o quitar sin romper nada … o casi

WordPress carga por defecto un montón de funcionalidades que se fueron añadiendo a lo largo de 20 años de historia. Muchas de ellas tenían todo el sentido en su momento pero hoy son completamente innecesarias. Otras solo son útiles en situaciones muy concretas, y algunas, directamente son un lastre para el rendimiento y la seguridad de tu web.

En esta guía he recopilado todas las funcionalidades que puedes desactivar en WordPress, organizadas por grado de necesidad para que tengas claro qué puedes quitar sin pensártelo y qué deberías valorar antes. Cada una incluye la explicación de qué es, si es seguro quitarla, qué pierdes, qué ganas, el código para hacerlo y cómo comprobar que el cambio ha surtido efecto.

Dónde añadir los códigos
Los fragmentos de código PHP de esta guía puedes añadirlos en el archivo functions.php de tu tema hijo o, mucho mejor, como un mu-plugin. Si vas a aplicar varios cambios te recomiendo que los organices en un mu-plugin modular con varios archivos, así tendrás todo bajo control y podrás activar o desactivar cada optimización de forma independiente.
Los snippets que ven en el wp-config.php se deben añadir directamente en ese archivo, siempre antes de la línea que dice /* That's all, stop editing! Happy publishing. */.

Índice de contenidos

Totalmente prescindibles

Funcionalidades obsoletas o sin uso real en la actualidad. Las puedes desactivar sin pensártelo dos veces.

RSD link (Really Simple Discovery)

Qué es y para qué sirve

RSD (Really Simple Discovery) es un protocolo que permitía a clientes de blog externos como Windows Live Writer o aplicaciones de escritorio de aquella época, detectar automáticamente los servicios de publicación disponibles en tu WordPress. Añade una etiqueta <link> en la cabecera HTML que apunta al archivo xmlrpc.php.

¿Es seguro desactivarlo?

Totalmente. Los programas que usaban este protocolo están abandonados o son completamente marginales. Ninguna herramienta moderna de publicación necesita RSD para funcionar.

Qué pierdes

La capacidad de que un cliente de blog externo detecte automáticamente cómo conectarse a tu WordPress. En la práctica, nada.

Qué ganas

Una petición HTTP menos en la cabecera y una línea menos de código expuesto que además señala la existencia de xmlrpc.php.

Código

// Desactiva el enlace RSD de la cabecera HTML
remove_action( 'wp_head', 'rsd_link' );

Cómo comprobar que funciona

Abre el código fuente de tu web (clic derecho > Ver código fuente) y busca EditURI. Si no aparece ya está.

Windows Live Writer manifest

Qué es y para qué sirve

Añade una etiqueta en la cabecera HTML para que Windows Live Writer, un programa de escritorio de Microsoft para publicar en blogs, pudiera detectar las capacidades de tu sitio. Microsoft lo abandonó en 2017.

¿Es seguro desactivarlo?

Totalmente. El programa lleva años muerto y no hay sustituto que use este manifest.

Qué pierdes

Compatibilidad con un programa que ya no existe.

Qué ganas

Una línea menos de código innecesario en tu cabecera HTML.

Código

// Desactiva el manifest de Windows Live Writer
remove_action( 'wp_head', 'wlwmanifest_link' );

Cómo comprobar que funciona

Abre el código fuente de tu web y busca wlwmanifest. Si no aparece es que está desactivado.

Meta generador con la versión de WordPress

Qué es y para qué sirve

WordPress inserta una etiqueta <meta name="generator"> en la cabecera HTML que indica la versión exacta de WordPress que estás usando. No tiene ninguna utilidad funcional, es simplemente informativo.

¿Es seguro desactivarlo?

No solo es seguro, es recomendable. Exponer la versión de WordPress facilita que un atacante identifique vulnerabilidades conocidas de esa versión concreta.

Qué pierdes

Absolutamente nada funcional.

Qué ganas

Ocultas un dato que solo beneficia a quien quiera buscar vulnerabilidades en tu web.

Código

// Elimina la etiqueta meta generator del head
remove_action( 'wp_head', 'wp_generator' );

Cómo comprobar que funciona

Abre el código fuente y busca generator. No debería aparecer ninguna etiqueta meta con la versión de WordPress.

Tag generator en feeds RSS

Qué es y para qué sirve

Además de la etiqueta en el HTML, WordPress también incluye la versión en los feeds RSS, Atom y otros formatos de sindicación. Es el mismo problema que el anterior pero en otro sitio.

¿Es seguro desactivarlo?

Totalmente. Los lectores de feeds no necesitan saber qué versión de WordPress usas.

Qué pierdes

Nada.

Qué ganas

Eliminas otro punto donde se expone la versión de WordPress, esta vez en los feeds.

Código

// Elimina la versión de WordPress de los feeds y cualquier otro lugar
add_filter( 'the_generator', '__return_empty_string' );

Cómo comprobar que funciona

Accede a la URL de tu feed (normalmente tudominio.com/feed/) y busca generator. No debería mostrar la versión de WordPress.

Shortlink en la cabecera HTML

Qué es y para qué sirve

WordPress añade en la cabecera HTML una etiqueta <link rel="shortlink"> con la URL corta de cada entrada en formato ?p=123. También envía esta URL como cabecera HTTP. Es un vestigio de cuando los acortadores de URL eran importantes para compartir en redes sociales.

¿Es seguro desactivarlo?

Totalmente. Si usas enlaces permanentes personalizados (y a estas alturas deberías) el shortlink (enlace corto/simple) es completamente redundante.

Qué pierdes

La URL corta con formato ?p=ID seguirá funcionando si alguien la usa directamente. Lo que se elimina es la etiqueta que la anuncia en la cabecera.

Qué ganas

Una línea menos en la cabecera HTML y una cabecera HTTP menos.

Código

// Elimina el shortlink de la cabecera HTML y de la cabecera HTTP
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );

Cómo comprobar que funciona

Abre el código fuente de cualquier entrada y busca shortlink. No debería aparecer.

Scripts y estilos de emojis

Qué es y para qué sirve

Desde WordPress 4.2 se cargan un script JavaScript y una hoja de estilos CSS para ofrecer la visualización de emojis de forma consistente en navegadores antiguos que no los incluían de forma nativa. También añade un DNS Prefetch a s.w.org para precargar la conexión al CDN de los emojis.

¿Es seguro desactivarlo?

Totalmente. Todos los navegadores modernos (y llevan años haciéndolo) procesan emojis de forma nativa sin necesidad de scripts adicionales.

Qué pierdes

La compatibilidad de emojis con navegadores muy antiguos que nadie usa ya. Si algún visitante usase un navegador de 2014 vería cuadrados en lugar de emojis, nada más.

Qué ganas

Te ahorras un script JavaScript, una hoja de estilos CSS, una conexión DNS prefetch externa y el filtrado de emojis en contenidos y correos. En rendimiento se nota, especialmente en dispositivos móviles.

Código

// Desactiva los scripts y estilos de emojis en el frontend y en el admin
function ayudawp_desactivar_emojis() {
    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );

    // Elimina el DNS prefetch a s.w.org
    add_filter( 'wp_resource_hints', 'ayudawp_eliminar_dns_prefetch_emojis', 10, 2 );

    // Elimina el plugin de emojis del editor TinyMCE
    add_filter( 'tiny_mce_plugins', 'ayudawp_eliminar_tinymce_emojis' );
}
add_action( 'init', 'ayudawp_desactivar_emojis' );

function ayudawp_eliminar_dns_prefetch_emojis( $urls, $relation_type ) {
    if ( 'dns-prefetch' === $relation_type ) {
        $urls = array_filter( $urls, function ( $url ) {
            return false === strpos( $url, 'https://s.w.org/images/core/emoji/' );
        } );
    }
    return $urls;
}

function ayudawp_eliminar_tinymce_emojis( $plugins ) {
    if ( is_array( $plugins ) ) {
        return array_diff( $plugins, array( 'wpemoji' ) );
    }
    return $plugins;
}

Cómo comprobar que funciona

Abre las herramientas de desarrollo del navegador (F12), ve a la pestaña de red (Network) y recarga la página. Busca wp-emoji. No debería cargar ningún archivo relacionado con emojis. También puedes abrir el código fuente y verificar que no aparece s.w.org.

Pingbacks y trackbacks

Qué es y para qué sirve

Los pingbacks y trackbacks son un sistema de avisos entre blogs. Cuando otro sitio enlaza a tu contenido (o tú al suyo) WordPress envía o recibe una notificación automática. Fue una funcionalidad importante en los primeros años de la blogosfera, cuando los blogs se enlazaban entre sí activamente.

¿Es seguro desactivarlo?

Totalmente. Hoy en día los pingbacks y trackbacks son casi exclusivamente una fuente de spam y un vector de ataques DDoS de amplificación. Los ajustes de comentarios permiten desactivar los futuros, pero este código lo refuerza a nivel global.

Qué pierdes

Las notificaciones automáticas cuando otro blog enlaza a tu contenido o tú enlazas al suyo. En la práctica nadie usa ya este sistema para descubrir quién le enlaza.

Qué ganas

Eliminas una fuente habitual de spam en los comentarios y un vector de ataques conocido.

Código

// Desactiva los pingbacks y trackbacks
add_filter( 'pings_open', '__return_false' );
add_filter( 'xmlrpc_methods', 'ayudawp_desactivar_pingbacks_xmlrpc' );

function ayudawp_desactivar_pingbacks_xmlrpc( $methods ) {
    unset( $methods['pingback.ping'] );
    unset( $methods['pingback.extensions.getPingbacks'] );
    return $methods;
}

Cómo comprobar que funciona

Ve a «Ajustes > Comentarios» y confirma que las opciones de pingback están desmarcadas. Además, si quieres verificar que los métodos XML-RPC están desactivados, puedes enviar una petición POST a tu-dominio.com/xmlrpc.php con el método pingback.ping y debería devolver un error de método no encontrado.

Self-pingbacks

Qué es y para qué sirve

Cuando enlazas a otra entrada de tu propio sitio WordPress se envía un pingback a sí mismo. Esto genera un comentario de tipo pingback en la entrada enlazada, que normalmente aparece como un enlace sin contexto en la zona de comentarios.

¿Es seguro desactivarlo?

Totalmente. No aporta nada a nivel de SEO ni de experiencia de usuario, y ensucia la zona de comentarios con enlaces internos redundantes.

Qué pierdes

Los auto-avisos de enlace interno en los comentarios. Si quieres saber qué entradas enlazan entre sí, cualquier plugin de SEO o de enlaces internos lo hace mucho mejor.

Qué ganas

Comentarios más limpios y menos ruido en las notificaciones del escritorio.

Código

// Elimina los self-pingbacks (pingbacks a tu propio sitio)
function ayudawp_desactivar_self_pingbacks( &$links ) {
    $home = home_url();
    foreach ( $links as $l => $link ) {
        if ( 0 === strpos( $link, $home ) ) {
            unset( $links[ $l ] );
        }
    }
}
add_action( 'pre_ping', 'ayudawp_desactivar_self_pingbacks' );

Cómo comprobar que funciona

Crea una entrada de prueba que enlace a otra entrada de tu propio sitio. Publica y espera unos minutos. No debería aparecer ningún comentario de tipo pingback en la entrada enlazada.

Cabecera HTTP X-Pingback

Qué es y para qué sirve

WordPress envía una cabecera HTTP X-Pingback en cada respuesta del servidor, anunciando la URL de xmlrpc.php para que otros sistemas sepan dónde enviar pingbacks.

¿Es seguro desactivarlo?

Totalmente, y especialmente si ya has desactivado los pingbacks. No tiene sentido anunciar un servicio que no vas a usar.

Qué pierdes

La posibilidad de que otros sitios te envíen pingbacks automáticamente. Si ya los has desactivado, nada.

Qué ganas

Dejas de anunciar públicamente la ruta a xmlrpc.php, lo cual es un dato que los atacantes buscan activamente.

Código

// Elimina la cabecera HTTP X-Pingback
function ayudawp_eliminar_cabecera_pingback( $headers ) {
    unset( $headers['X-Pingback'] );
    return $headers;
}
add_filter( 'wp_headers', 'ayudawp_eliminar_cabecera_pingback' );

Cómo comprobar que funciona

Abre las herramientas de desarrollo del navegador (F12), ve a la pestaña de red (Network), recarga la página y haz clic en la primera petición (el documento HTML). En las cabeceras de respuesta (Response Headers) no debería aparecer X-Pingback.

Mensajes detallados de error en la pantalla de inicio de sesión

Qué es y para qué sirve

Cuando introduces un nombre de usuario o contraseña incorrectos en la pantalla de acceso WordPress te indica específicamente qué dato concreto es el incorrecto. Por ejemplo, te dice si el nombre de usuario no existe o si la contraseña es incorrecta para ese usuario. Esto es útil para el usuario legítimo pero también es una pista muy valiosa para un atacante.

¿Es seguro desactivarlo?

Totalmente. Lo único que cambia es que el mensaje de error será genérico. El acceso funciona exactamente igual para los usuarios legítimos.

Qué pierdes

El detalle de si el error fue en el usuario o en la contraseña. Es una pequeña molestia para el usuario legítimo que no recuerda sus datos, pero nada que impida el acceso si los datos son correctos.

Qué ganas

Impides que un atacante pueda confirmar si un nombre de usuario existe en tu sistema, que es el primer paso en un ataque de fuerza bruta dirigido.

Código

// Muestra un mensaje genérico en los errores de acceso
function ayudawp_error_login_generico() {
    return 'Los datos de acceso no son correctos.';
}
add_filter( 'login_errors', 'ayudawp_error_login_generico' );

Cómo comprobar que funciona

Intenta acceder a tudominio.com/wp-login.php con un usuario o contraseña incorrectos. El mensaje debería decir simplemente «Los datos de acceso no son correctos» sin indicar si el error es el usuario o la contraseña.

Publicar por correo electrónico

Qué es y para qué sirve

WordPress incluye de serie una funcionalidad para publicar entradas enviando un correo electrónico a una dirección específica. Los ajustes de configuración aparecen en «Ajustes > Escritura» (servidor de correo, usuario, contraseña). Es una funcionalidad heredada de los primeros tiempos de WordPress y el archivo wp-mail.php sigue existiendo en la instalación.

¿Es seguro desactivarlo?

Totalmente. Es una funcionalidad que prácticamente nadie usa y que además expone un archivo PHP (wp-mail.php) que puede ser un punto de entrada innecesario.

Qué pierdes

La posibilidad de publicar entradas enviando un correo electrónico. Si alguna vez necesitas publicar en remoto, la REST API o la app oficial de WordPress son infinitamente mejores y más seguras.

Qué ganas

Cierras el acceso a wp-mail.php y eliminas los campos de configuración del servidor de correo de los ajustes de escritura.

Código

// Desactiva la funcionalidad de publicar por correo electrónico
// Bloquea el acceso a wp-mail.php
function ayudawp_desactivar_publicar_por_email() {
    if ( basename( $_SERVER['SCRIPT_FILENAME'] ) === 'wp-mail.php' ) {
        wp_die(
            'Esta funcionalidad está desactivada.',
            'Acceso no permitido',
            array( 'response' => 403 )
        );
    }
}
add_action( 'init', 'ayudawp_desactivar_publicar_por_email' );

Cómo comprobar que funciona

Accede a tu-dominio.com/wp-mail.php directamente. Debería mostrarte un mensaje de acceso no permitido.

Paginación de comentarios

Qué es y para qué sirve

WordPress permite dividir los comentarios en páginas cuando hay muchos. Esto genera URLs adicionales del tipo tu-entrada/comment-page-2/, /comment-page-3/, etc. Se configura en «Ajustes > Comentarios».

¿Es seguro desactivarlo?

Totalmente. De hecho es muy recomendable desde el punto de vista del SEO. Las páginas de comentarios generan URLs duplicadas o de contenido muy pobre que inflan tu sitio de cara a los buscadores y desperdician presupuesto de rastreo.

Qué pierdes

La paginación automática de comentarios largos. En entradas con cientos de comentarios todos se cargarán de golpe. Si tu web tiene entornos con tantísimos comentarios hay soluciones mucho mejores mediante carga AJAX que no generan URLs adicionales.

Qué ganas

Eliminas montones de URLs innecesarias que afectan negativamente al presupuesto de rastreo de los buscadores. Tu mapa del sitio queda más limpio y los buscadores se centran en el contenido que importa.

Código

// Desactiva la paginación de comentarios
add_filter( 'option_page_comments', '__return_zero' );

// Redirige las URLs de paginación de comentarios existentes con 301
function ayudawp_redirigir_paginacion_comentarios() {
    if ( is_singular() && get_query_var( 'cpage' ) ) {
        wp_redirect( get_permalink(), 301 );
        exit;
    }
}
add_action( 'template_redirect', 'ayudawp_redirigir_paginacion_comentarios' );

Cómo comprobar que funciona

Accede a una URL con paginación de comentarios, por ejemplo tudominio.com/una-entrada/comment-page-2/. Debería redirigirte con un error 301 a la entrada original.

Capital P Dangit

Qué es y para qué sirve

WordPress incluye un filtro automático que corrige «Wordpress» (con la p minúscula) a «WordPress» (con la P mayúscula) en el contenido de las entradas, los comentarios y los títulos. Lo añadió el propio Matt Mullenweg y la comunidad lo bautizó con este nombre tan descriptivo.

¿Es seguro desactivarlo?

Totalmente. Es un filtro puramente estético que modifica tu contenido sin tu permiso. Si escribes «Wordpress» intencionadamente (o no), esa debería ser tu decisión.

Qué pierdes

La corrección automática de la P mayúscula en WordPress. Tendrás que escribirlo bien tú mismo.

Qué ganas

Control total sobre tu propio contenido. Nada menos que 3 filtros menos que se ejecutan en cada carga de página.

Código

// Desactiva la corrección automática de la P mayúscula de WordPress
remove_filter( 'the_title', 'capital_P_dangit', 11 );
remove_filter( 'the_content', 'capital_P_dangit', 11 );
remove_filter( 'comment_text', 'capital_P_dangit', 31 );

Cómo comprobar que funciona

Crea una entrada de prueba con el texto «Wordpress» (p minúscula) en el título o contenido. Al previsualizarla debería mantenerse tal cual, sin corregirse automáticamente a «WordPress».

Temas por defecto que se reinstalan solos

Qué es y para qué sirve

Cada vez que WordPress se actualiza a una nueva versión mayor, instala automáticamente el tema por defecto que la acompaña (Twenty Twenty-Five, Twenty Twenty-Six, etc.). Esto ocurre aunque nunca lo vayas a usar.

¿Es seguro desactivarlo?

Sí. Lo único que se recomienda tradicionalmente es tener siempre un tema por defecto instalado como respaldo por si tu tema activo falla. Una vez que tengas uno no necesitas que WordPress te instale uno nuevo con cada actualización.

Qué pierdes

Los nuevos temas por defecto no se instalarán automáticamente. Si quieres probar alguno siempre puedes instalarlo manualmente.

Qué ganas

Dejas de acumular temas que nunca vas a usar y que ocupan espacio y son una superficie de ataque adicional si no los mantienes actualizados.

Código (wp-config.php)

// Evita que se instalen temas por defecto nuevos en las actualizaciones
define( 'CORE_UPGRADE_SKIP_NEW_BUNDLED', true );

Cómo comprobar que funciona

La próxima vez que WordPress se actualice a una nueva versión mayor, comprueba en «Apariencia > Temas» que no se ha instalado ningún tema nuevo que no hayas instalado tú.

Menú de WordPress en la barra de administración

Qué es y para qué sirve

El logotipo de WordPress en la esquina superior izquierda de la barra de administración despliega un menú con enlaces a WordPress.org, la documentación, los foros de soporte y la página «Acerca de» de tu instalación.

¿Es seguro desactivarlo?

Totalmente. Son enlaces externos informativos que no afectan a ninguna funcionalidad de tu sitio.

Qué pierdes

Los enlaces rápidos a la documentación y foros de WordPress.org desde la barra de administración. Puedes acceder a estos recursos directamente desde el navegador cuando lo necesites.

Qué ganas

Una barra de administración más limpia y enfocada en tu sitio.

Código

// Elimina el menú de WordPress de la barra de administración
function ayudawp_eliminar_menu_wp_admin_bar( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( 'wp-logo' );
}
add_action( 'admin_bar_menu', 'ayudawp_eliminar_menu_wp_admin_bar', 999 );

Cómo comprobar que funciona

Recarga el escritorio de administración. El logotipo de WordPress y su menú desplegable ya no deberían aparecer en la esquina superior izquierda de la barra de administración.

Editor integrado de imágenes

Qué es y para qué sirve

WordPress incluye un editor de imágenes básico dentro de la biblioteca de medios que permite recortar, rotar, voltear y redimensionar imágenes directamente desde el escritorio. Carga scripts JavaScript adicionales para ofrecer esta funcionalidad.

¿Es seguro desactivarlo?

Sí. La generación de miniaturas y el redimensionado automático de imágenes al subirlas siguen funcionando con normalidad. Lo que se desactiva es únicamente el editor manual que aparece al hacer clic en «Editar imagen» en la biblioteca de medios.

Qué pierdes

La posibilidad de recortar o rotar imágenes desde WordPress. En la práctica cualquier edición seria de imágenes se hace con herramientas externas antes de subirlas.

Qué ganas

Scripts menos que se cargan en el escritorio de administración cuando trabajas con la biblioteca de medios.

Código

// Desactiva el editor integrado de imágenes en la biblioteca de medios
function ayudawp_desactivar_editor_imagenes( $hook ) {
    if ( in_array( $hook, array( 'post.php', 'post-new.php', 'upload.php' ), true ) ) {
        wp_dequeue_script( 'image-edit' );
        wp_deregister_script( 'image-edit' );
    }
}
add_action( 'admin_enqueue_scripts', 'ayudawp_desactivar_editor_imagenes' );

Cómo comprobar que funciona

Ve a «Medios > Biblioteca», abre cualquier imagen y comprueba que el botón «Editar imagen» ya no está disponible o no responde al hacer clic.

Aviso periódico de verificación del email de administrador

Qué es y para qué sirve

Desde WordPress 5.3, cada cierto tiempo (por defecto cada seis meses) WordPress muestra un aviso al iniciar sesión pidiendo que confirmes que tu dirección de correo de administrador sigue siendo correcta. Es una pantalla intermedia antes de acceder al escritorio.

¿Es seguro desactivarlo?

Sí. Si gestionas tu propio sitio y sabes que tu email es correcto no necesitas que WordPress te lo pregunte periódicamente. La dirección de email se puede cambiar en cualquier momento desde «Ajustes > Generales».

Qué pierdes

El recordatorio periódico para verificar tu email de administrador. Tendrás que acordarte tú si cambias de correo.

Qué ganas

Un inicio de sesión más limpio sin pantallas intermedias innecesarias.

Código

// Desactiva el aviso periódico de verificación del email de administrador
add_filter( 'admin_email_check_interval', '__return_false' );

Cómo comprobar que funciona

Al iniciar sesión en el escritorio deberías acceder directamente sin que te aparezca la pantalla de verificación de correo electrónico.

Panel de «Te damos la bienvenida» del escritorio

Qué es y para qué sirve

El panel de bienvenida es un panel grande que aparece en la parte superior del escritorio de WordPress cuando accedes, con enlaces rápidos para personalizar tu sitio, escribir una entrada, añadir una página, etc. Está pensado para usuarios nuevos que acaban de instalar WordPress.

¿Es seguro desactivarlo?

Totalmente. Es un panel informativo orientado a principiantes que ocupa mucho espacio visual en el escritorio.

Qué pierdes

Los enlaces rápidos del panel de bienvenida. Todas esas acciones están disponibles desde el menú lateral del escritorio.

Qué ganas

Un escritorio más limpio y directo, especialmente útil si gestionas muchos sitios.

Código

// Elimina el panel de bienvenida del escritorio
remove_action( 'welcome_panel', 'wp_welcome_panel' );

Cómo comprobar que funciona

Accede al escritorio de WordPress. El panel de bienvenida grande ya no debería aparecer en la parte superior.

Avisos de actualización para usuarios no administradores

Qué es y para qué sirve

WordPress muestra avisos en el escritorio cuando hay actualizaciones disponibles para el núcleo, plugins y temas. Estos avisos aparecen para todos los usuarios, incluidos editores, autores y colaboradores, que no tienen permisos para realizar actualizaciones.

¿Es seguro desactivarlo?

Sí. Solo se desactivan los avisos para usuarios que no pueden actualizar. Los administradores siguen viéndolos con normalidad.

Qué pierdes

Nada. Los usuarios que no son administradores dejan de ver avisos sobre los que no pueden actuar.

Qué ganas

Un escritorio más limpio para editores, autores y colaboradores, sin avisos que no les competen.

Código

// Oculta los avisos de actualización para usuarios que no son administradores
function ayudawp_ocultar_avisos_actualizacion() {
    if ( ! current_user_can( 'update_core' ) ) {
        remove_action( 'admin_notices', 'update_nag', 3 );
        remove_action( 'admin_notices', 'maintenance_nag', 10 );
    }
}
add_action( 'admin_head', 'ayudawp_ocultar_avisos_actualizacion' );

Cómo comprobar que funciona

Inicia sesión con un usuario que no sea administrador (un editor, por ejemplo). No debería ver ningún aviso de actualización de WordPress en el escritorio aunque las haya.

Raramente necesarias

Funcionalidades que tienen algún uso legítimo pero que la gran mayoría de sitios WordPress no necesitan. Revisa si tu caso es la excepción antes de desactivarlas.

XML-RPC

Qué es y para qué sirve

XML-RPC es un protocolo de comunicación remota que permite que aplicaciones externas interactúen con WordPress. Fue la forma original de publicar contenido en remoto, gestionar entradas y recibir pingbacks. Hoy la REST API lo ha reemplazado casi por completo, pero algunas herramientas concretas todavía lo usan, como Jetpack, que necesita XML-RPC para funcionar, o la app oficial de WordPress para móviles también lo utiliza en determinados flujos de conexión.

¿Es seguro desactivarlo?

Sí, siempre que no uses Jetpack ni la app oficial de WordPress. XML-RPC es uno de los vectores de ataque más habituales en WordPress, usado para ataques de fuerza bruta y amplificación DDoS.

Qué pierdes

La compatibilidad con Jetpack, la app oficial de WordPress y cualquier herramienta que dependa de XML-RPC en lugar de la REST API. Si usas alguno de estos no lo desactives.

Qué ganas

Cierras uno de los puntos de entrada más atacados de WordPress. Dejas de recibir intentos de fuerza bruta por esta vía.

Código

// Desactiva XML-RPC completamente
add_filter( 'xmlrpc_enabled', '__return_false' );

Cómo comprobar que funciona

Accede a tudominio.com/xmlrpc.php desde el navegador. Debería devolver un mensaje XML indicando que los servicios XML-RPC están desactivados.

oEmbed y wp-embed.js

Qué es y para qué sirve

WordPress actúa tanto como proveedor como consumidor de oEmbed. Como proveedor permite que otros sitios incrusten tus entradas como un widget enriquecido (con título, extracto y miniatura). Para ello carga un script (wp-embed.min.js) y expone endpoints en la REST API. Como consumidor permite que tú incrustes contenido de YouTube, Twitter y otros servicios pegando la URL en el editor.

¿Es seguro desactivarlo?

Lo que se desactiva aquí es solo la parte de proveedor para que otros sitios puedan incrustar tu contenido. La parte de consumidor (incrustar YouTube, Twitter, etc.) sigue funcionando normalmente.

Qué pierdes

Otros sitios no podrán incrustar tus entradas como widget enriquecido. Tendrán que enlazarte de forma convencional.

Qué ganas

Un script JavaScript menos en la web, un endpoint REST menos expuesto y un enlace alternate menos en la cabecera HTML.

Código

// Desactiva WordPress como proveedor de oEmbed
function ayudawp_desactivar_oembed_proveedor() {
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );
}
add_action( 'init', 'ayudawp_desactivar_oembed_proveedor' );

// Desencola el script wp-embed
function ayudawp_desencolar_wp_embed() {
    wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_footer', 'ayudawp_desencolar_wp_embed' );

Cómo comprobar que funciona

Abre el código fuente de cualquier entrada y busca oembed. No debería aparecer el enlace de descubrimiento. En la pestaña de red de las herramientas de desarrollo, busca wp-embed y comprueba que el script no se carga.

REST API link en la cabecera HTML

Qué es y para qué sirve

WordPress añade una etiqueta <link rel="https://api.w.org/"> en la cabecera HTML y también envía una cabecera HTTP Link que apuntan a la URL base de la REST API (/wp-json/). Esto permite a los clientes de la REST API descubrir automáticamente dónde están los endpoints.

¿Es seguro desactivarlo?

Sí. La REST API sigue funcionando con normalidad, lo único que se elimina es el «anuncio» de su existencia en la cabecera HTML. Cualquier aplicación que necesite la REST API ya sabe dónde buscarla sin necesidad de este enlace.

Qué pierdes

El descubrimiento automático de la REST API desde la cabecera. Los clientes que ya conocen la URL de tu API no se ven afectados.

Qué ganas

Dejas de anunciar públicamente la ruta de tu REST API, lo cual reduce la superficie de información expuesta.

Código

// Elimina el enlace de la REST API de la cabecera HTML y HTTP
remove_action( 'wp_head', 'rest_output_link_wp_head' );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );

Cómo comprobar que funciona

Abre el código fuente de tu web y busca api.w.org. No debería aparecer. Comprueba también en las cabeceras de respuesta HTTP que no aparece la cabecera Link con la referencia a /wp-json/.

jQuery Migrate

Qué es y para qué sirve

jQuery Migrate es una capa de compatibilidad que WordPress carga junto con jQuery para que plugins y temas que usen funciones antiguas (ya eliminadas en versiones recientes de jQuery) sigan funcionando sin errores. Es un script de transición que se añadió para evitar que la actualización de jQuery rompiera cosas.

¿Es seguro desactivarlo?

Sí, siempre que tus plugins y tu tema estén actualizados y no usen funciones obsoletas de jQuery. Si al desactivarlo algo deja de funcionar simplemente vuelve a activarlo.

Qué pierdes

La compatibilidad con código JavaScript antiguo que use funciones eliminadas de jQuery. Si todo tu paquete de plugins, temas y WordPress está actualizado, nada.

Qué ganas

Un archivo JavaScript menos en la web (unos 10 KB comprimido) y la garantía de que no estás arrastrando compatibilidad con código obsoleto.

Código

// Elimina jQuery Migrate del frontend (no del admin para evitar problemas)
function ayudawp_desactivar_jquery_migrate( $scripts ) {
    if ( ! is_admin() && isset( $scripts->registered['jquery'] ) ) {
        $script = $scripts->registered['jquery'];
        if ( $script->deps ) {
            $script->deps = array_diff( $script->deps, array( 'jquery-migrate' ) );
        }
    }
}
add_action( 'wp_default_scripts', 'ayudawp_desactivar_jquery_migrate' );

Cómo comprobar que funciona

Abre las herramientas de desarrollo del navegador, pestaña de red (Network), y recarga la página. Busca jquery-migrate. No debería aparecer en la lista de scripts cargados. Revisa también la consola (Console) por si aparece algún error JavaScript, lo que indicaría que algo depende de jQuery Migrate.

Contraseñas de aplicación

Qué es y para qué sirve

Desde WordPress 5.6, existe un sistema de contraseñas de aplicación que permite generar contraseñas específicas para que aplicaciones externas se identifiquen con la REST API sin usar las credenciales principales del usuario. Es útil para integraciones con herramientas externas que necesitan acceso a tu WordPress.

¿Es seguro desactivarlo?

Sí, si no usas aplicaciones externas que se conecten a tu WordPress mediante la REST API con este método de identificación. La inmensa mayoría de sitios no lo necesitan.

Qué pierdes

La posibilidad de generar contraseñas de aplicación desde el perfil de usuario. Si alguna aplicación externa la necesita lo activas y punto.

Qué ganas

Cierras un método de identificación que, si no lo usas, es simplemente una puerta más que podría ser explotada.

Código

// Desactiva las contraseñas de aplicación
add_filter( 'wp_is_application_passwords_available', '__return_false' );

Cómo comprobar que funciona

Ve a «Usuarios > Tu perfil» y desplázate hasta el final. La sección «Contraseñas de aplicación» ya no debería aparecer.

Dashicons en la parte visible de la web

Qué es y para qué sirve

Dashicons es la fuente de iconos de WordPress que se usa en el escritorio de administración. Se carga también en la web para los usuarios que ven la barra de administración (usuarios conectados). Para los visitantes que no están conectados no debería cargarse, pero algunos temas o plugins la encolan sin comprobarlo.

¿Es seguro desactivarlo?

Sí, para visitantes que no están conectados. Este código solo la elimina de la parte visible de la web para usuarios no conectados, donde no tiene utilidad.

Qué pierdes

Si tu tema o algún plugin usa iconos Dashicons de forma visible esos iconos dejarán de verse para los visitantes. Es poco habitual pero conviene revisarlo.

Qué ganas

Una hoja de estilos CSS y una fuente tipográfica menos que tus visitantes descargan innecesariamente.

Código

// Elimina Dashicons del frontend para usuarios no conectados
function ayudawp_desactivar_dashicons_frontend() {
    if ( ! is_user_logged_in() ) {
        wp_deregister_style( 'dashicons' );
    }
}
add_action( 'wp_enqueue_scripts', 'ayudawp_desactivar_dashicons_frontend' );

Cómo comprobar que funciona

Cierra sesión en WordPress (o abre una ventana de incógnito) y carga tu web. En las herramientas de desarrollo, pestaña de red, busca dashicons. No debería cargarse ningún archivo de Dashicons.

Enlaces de entradas adyacentes (rel prev/next)

Qué es y para qué sirve

WordPress añade en la cabecera HTML de las entradas individuales etiquetas <link rel="prev"> y <link rel="next"> que apuntan a la entrada anterior y siguiente. Originalmente se pensaron como ayuda para la navegación y para los buscadores.

¿Es seguro desactivarlo?

Sí. Google confirmó hace años que no usa estas etiquetas para el rastreo ni la indexación. No tienen efecto práctico en el SEO.

Qué pierdes

Dos etiquetas en la cabecera HTML que los navegadores y buscadores ignoran en la práctica.

Qué ganas

Una cabecera HTML más limpia y, aunque marginal, te ahorras dos consultas a la base de datos por cada entrada individual (para obtener la entrada anterior y siguiente).

Código

// Elimina los enlaces de entrada anterior y siguiente de la cabecera HTML
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10 );

Cómo comprobar que funciona

Abre el código fuente de una entrada individual y busca rel="prev" o rel="next". No deberían aparecer.

Directorio de bloques remotos en el editor

Qué es y para qué sirve

Cuando estás editando con el editor de bloques y buscas un bloque que no tienes instalado WordPress te sugiere instalar bloques de terceros directamente desde el repositorio de WordPress.org. Es un acceso rápido al directorio de bloques sin salir del editor.

¿Es seguro desactivarlo?

Sí. Siempre puedes instalar bloques desde «Plugins > Añadir nuevo» cuando lo necesites. Tener esta funcionalidad integrada en el editor puede llevar a instalar bloques sin la debida evaluación previa.

Qué pierdes

La sugerencia automática de bloques del repositorio mientras editas. La instalación manual desde la sección de plugins sigue funcionando.

Qué ganas

Menos peticiones externas al repositorio de WordPress.org mientras editas y más control sobre qué se instala en tu sitio.

Código

// Desactiva las sugerencias de bloques del repositorio en el editor
remove_action( 'enqueue_block_editor_assets', 'wp_enqueue_editor_block_directory_assets' );

Cómo comprobar que funciona

Abre el editor de bloques, haz clic en el insertador de bloques (+) y busca un bloque que no tengas instalado. No debería aparecer la sección de sugerencias del directorio de WordPress.org.

Patrones remotos del repositorio de WordPress

Qué es y para qué sirve

WordPress descarga patrones de bloques del repositorio de WordPress.org para ofrecerlos como opciones cuando usas el insertador del editor. Estos patrones se cargan haciendo peticiones externas al servidor de WordPress.org.

¿Es seguro desactivarlo?

Sí. Los patrones que ya vengan incluidos con tu tema o los que hayas creado tú seguirán estando disponibles. Solo se eliminan los que se descargan del repositorio remoto.

Qué pierdes

El catálogo de patrones remotos de WordPress.org en el insertador del editor. Los patrones locales de tu tema no se ven afectados.

Qué ganas

Menos peticiones externas al cargar el editor y un insertador de bloques más limpio y centrado en tus patrones.

Código

// Desactiva la carga de patrones remotos del repositorio de WordPress.org
add_filter( 'should_load_remote_block_patterns', '__return_false' );

Cómo comprobar que funciona

Abre el editor de bloques y accede al insertador de patrones. No deberían aparecer los patrones del repositorio de WordPress.org, solo los de tu tema.

Editor de archivos del escritorio

Qué es y para qué sirve

WordPress incluye un editor de código integrado que permite modificar archivos de plugins y temas directamente desde el escritorio de administración («Apariencia > Editor de archivos del tema» y «Plugins > Editor de archivos de plugins»). Es una funcionalidad de alto riesgo.

¿Es seguro desactivarlo?

No solo es seguro, es una de las primeras medidas de seguridad recomendadas. Si alguien consigue acceso a tu escritorio de administración este editor le permite inyectar código directamente en tu instalación.

Qué pierdes

La posibilidad de editar archivos de temas y plugins desde el escritorio. Cualquier edición de código debería hacerse por FTP/SFTP o mediante un IDE, nunca desde un editor web sin control de versiones.

Qué ganas

Cierras una de las vías más peligrosas que tiene un atacante para modificar tu sitio una vez dentro del escritorio.

Código (wp-config.php)

// Desactiva el editor de archivos de plugins y temas del escritorio
define( 'DISALLOW_FILE_EDIT', true );

Cómo comprobar que funciona

Ve a «Apariencia» en el menú del escritorio. La opción «Editor de archivos del tema» ya no debería aparecer. Lo mismo con «Plugins «Editor de archivos de plugins».

Según el tipo de web

Funcionalidades que son útiles en determinados escenarios pero no en otros. Aquí la decisión depende de cómo uses WordPress y de qué herramientas tengas instaladas. Lee cada caso y valora si se aplica a tu situación.

Heartbeat API en el frontend

Qué es y para qué sirve

La Heartbeat API es un sistema de comunicación periódica entre el navegador y el servidor mediante peticiones AJAX que se ejecutan cada 15-60 segundos. En el escritorio se usa para el autoguardado, el bloqueo de entradas mientras las edita otro usuario y las notificaciones en tiempo real. En la web suele cargarse si tienes plugins que lo necesitan (algunos plugins de chat en vivo, por ejemplo).

¿Es seguro desactivarlo?

En la parte visible de la web sí. Solo desactívalo en el escritorio de administración si estás seguro de que no necesitas el autoguardado ni el bloqueo colaborativo de entradas.

Qué pierdes

Las funcionalidades que dependan de Heartbeat en la web dejarán de funcionar. Normalmente ninguna funcionalidad imprescindible lo usa en portada.

Qué ganas

Eliminas peticiones AJAX periódicas que consumen recursos del servidor innecesariamente en cada visita a portada.

Código

// Desactiva Heartbeat en el frontend (no en el escritorio)
function ayudawp_desactivar_heartbeat_frontend() {
    if ( ! is_admin() ) {
        wp_deregister_script( 'heartbeat' );
    }
}
add_action( 'wp_enqueue_scripts', 'ayudawp_desactivar_heartbeat_frontend', 1 );

Cómo comprobar que funciona

Abre las herramientas de desarrollo del navegador en una página de la web visible, pestaña de red (Network), y filtra por XHR/Fetch. Espera un minuto. No deberían aparecer peticiones a admin-ajax.php con la acción heartbeat.

Enlaces a feeds RSS y Atom en la cabecera HTML

Qué es y para qué sirve

WordPress añade etiquetas <link> en la cabecera HTML que anuncian los feeds RSS y Atom de tu sitio (feed general, feeds de comentarios, feeds de categorías, etc.). Permiten que los lectores de feeds descubran automáticamente tus feeds.

¿Es seguro desactivarlo?

Sí, si no tienes suscriptores RSS activos. Los feeds en sí siguen existiendo y funcionando, solo se elimina el enlace de descubrimiento automático de la cabecera.

Qué pierdes

Los lectores de feeds no detectarán automáticamente tus feeds al visitar tu web. Los suscriptores que ya tengan la URL del feed guardada no se ven afectados.

Qué ganas

Varias líneas menos en la cabecera HTML, que queda más limpia.

Código

// Elimina los enlaces de feeds RSS y Atom de la cabecera HTML
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );

Cómo comprobar que funciona

Abre el código fuente de tu web y busca application/rss+xml o application/atom+xml. No deberían aparecer etiquetas de tipo feed.

Endpoint REST API de usuarios

Qué es y para qué sirve

La REST API de WordPress expone por defecto un endpoint en /wp-json/wp/v2/users que lista los usuarios del sitio con sus nombres de usuario (slug). Es una vía conocida de enumeración de usuarios que los atacantes utilizan para obtener nombres de usuario válidos antes de lanzar ataques de fuerza bruta.

¿Es seguro desactivarlo?

Sí, si no tienes aplicaciones externas que necesiten consultar la lista de usuarios de tu WordPress mediante la REST API. Para el funcionamiento interno de WordPress no es necesario.

Qué pierdes

Las aplicaciones externas no podrán listar usuarios de tu WordPress a través de la REST API. El escritorio de administración y el editor de bloques no se ven afectados porque usan otras vías internas.

Qué ganas

Cierras una de las vías más usadas para enumerar usuarios, que es el primer paso en la mayoría de ataques de fuerza bruta dirigidos.

Código

// Bloquea el endpoint de usuarios de la REST API para no autenticados
function ayudawp_restringir_api_usuarios( $result, $server, $request ) {
    $ruta = $request->get_route();
    if ( strpos( $ruta, '/wp/v2/users' ) !== false && ! is_user_logged_in() ) {
        return new WP_Error(
            'rest_forbidden',
            'Acceso no permitido.',
            array( 'status' => 403 )
        );
    }
    return $result;
}
add_filter( 'rest_pre_dispatch', 'ayudawp_restringir_api_usuarios', 10, 3 );

Cómo comprobar que funciona

Abre una ventana de incógnito (sin sesión iniciada) y accede a tu-dominio.com/wp-json/wp/v2/users. Debería devolver un error 403 en lugar de la lista de usuarios.

REST API completa para visitantes no identificados

Qué es y para qué sirve

La REST API de WordPress permite acceder a gran parte del contenido y la configuración de tu sitio de forma programática. Por defecto, muchos endpoints son accesibles sin identificación, lo que permite que cualquiera consulte tus entradas, páginas, categorías y otros datos de forma estructurada.

¿Es seguro desactivarlo?

Depende. Si tu sitio no usa la REST API para nada en portada (ni formularios de contacto que la usen, ni aplicaciones JavaScript propias, ni WooCommerce, ni plugins que dependen de ella como Jetpack), puedes restringir el acceso solo a usuarios identificados. Si tienes duda, es mejor no tocarlo o se pueden romper cosas.

Qué pierdes

Cualquier funcionalidad que dependa de la REST API sin identificación dejará de funcionar. Algunos plugins de formularios, de caché o de búsqueda AJAX la utilizan internamente.

Qué ganas

Reduces significativamente la superficie de ataque de tu web al evitar que usuarios anónimos accedan a los endpoints de la API.

Código

// Restringe la REST API solo a usuarios autenticados
// PRECAUCIÓN: puede romper funcionalidades que dependan de la API sin autenticación
function ayudawp_restringir_rest_api( $result ) {
    if ( ! is_user_logged_in() ) {
        return new WP_Error(
            'rest_login_required',
            'La API REST solo está disponible para usuarios autenticados.',
            array( 'status' => 401 )
        );
    }
    return $result;
}
add_filter( 'rest_authentication_errors', 'ayudawp_restringir_rest_api' );

Cómo comprobar que funciona

Abre una ventana de incógnito y accede a tu-dominio.com/wp-json/wp/v2/posts. Debería devolver un error 401 en lugar de la lista de entradas. Comprueba que el escritorio y el editor de bloques siguen funcionando con normalidad estando conectado.

Estilos globales integrados del editor de bloques

Qué es y para qué sirve

WordPress genera e inyecta estilos CSS inline en portada basándose en la configuración del theme.json de tu tema de bloques. Estos estilos incluyen las paletas de colores, tipografías, espaciados y demás ajustes globales. Se imprimen como un bloque <style> directamente en el HTML.

¿Es seguro desactivarlo?

Solo si no usas un tema de bloques o si gestionas todos los estilos mediante tu propia hoja de estilos CSS. Si usas un tema de bloques (Twenty Twenty-Five, por ejemplo) y desactivas esto, perderás parte del diseño.

Qué pierdes

Los estilos globales que genera el theme.json. Si tu tema depende de ellos, el diseño se romperá.

Qué ganas

Un bloque grande de CSS inline menos en cada página, lo cual mejora el rendimiento en sitios que no lo necesitan.

Código

// Elimina los estilos globales inline del editor de bloques en el frontend
function ayudawp_desactivar_global_styles() {
    wp_dequeue_style( 'global-styles' );
    wp_dequeue_style( 'wp-block-library' );
}
add_action( 'wp_enqueue_scripts', 'ayudawp_desactivar_global_styles', 100 );

Cómo comprobar que funciona

Abre el código fuente de tu web y busca global-styles-inline-css o wp-block-library-css. No deberían aparecer. Comprueba visualmente que tu web se ve correctamente, si algo se descuadra es que tu tema depende de estos estilos y no deberías desactivarlos.

Filtros SVG de duotono (Gutenberg)

Qué es y para qué sirve

El editor de bloques incluye filtros SVG de duotono que se inyectan en el HTML del frontend como un bloque <svg> oculto. Se usan para aplicar efectos de color a las imágenes desde el editor. WordPress los carga aunque no los uses en ningún bloque.

¿Es seguro desactivarlo?

Sí, si no usas el efecto de duotono en ninguna imagen del editor de bloques. Si usas duotono en algún bloque de imagen o de portada, esos efectos dejarán de verse.

Qué pierdes

Los efectos de color de duotono en las imágenes que los usen. Si no has aplicado duotono a ninguna imagen, no pierdes nada visible.

Qué ganas

Un bloque de SVG inline menos en cada página de tu web.

Código

// Elimina los filtros SVG de duotono del frontend
remove_action( 'wp_body_open', 'wp_global_styles_render_svg_filters' );

Cómo comprobar que funciona

Abre el código fuente de cualquier página y busca wp-duotone. No debería aparecer ningún bloque SVG con filtros de duotono.

Mapas del sitio nativos de WordPress

Qué es y para qué sirve

Desde WordPress 5.5, se genera automáticamente un sitemap XML en /wp-sitemap.xml que incluye entradas, páginas, categorías, etiquetas y otros tipos de contenido. Ayuda a los buscadores a descubrir e indexar tu contenido.

¿Es seguro desactivarlo?

Solo si ya estás usando un plugin de SEO que genera su propio mapa del sitio (Yoast SEO, Rank Math, All in One SEO, etc.). Tener dos mapas del sitio activos no causa errores graves pero puede generar confusión en los buscadores con URLs duplicadas o conflictos en las directivas de indexación.

Qué pierdes

El mapa del sitio nativo de WordPress. Si no tienes otro plugin que lo genere los buscadores perderán esta fuente de descubrimiento de tus URLs.

Qué ganas

Evitas duplicidades si ya tienes un sitemap más completo y configurable generado por tu plugin de SEO.

Código

// Desactiva los sitemaps nativos de WordPress
add_filter( 'wp_sitemaps_enabled', '__return_false' );

Cómo comprobar que funciona

Accede a tu-dominio.com/wp-sitemap.xml. Debería devolver un error 404. Comprueba que el sitemap de tu plugin de SEO (/sitemap_index.xml o similar) sigue funcionando correctamente.

Lazy loading nativo

Qué es y para qué sirve

Desde WordPress 5.5, todas las imágenes y los iframes se marcan automáticamente con el atributo loading="lazy", que le dice al navegador que no las descargue hasta que estén cerca de ser visibles en la pantalla. Mejora el rendimiento al reducir las descargas iniciales.

¿Es seguro desactivarlo?

Solo si usas un plugin de rendimiento o caché que gestiona la carga diferida (lazy loading) con su propia implementación y hay conflictos entre ambos sistemas. Si no tienes ningún otro sistema de lazy loading déjalo activado.

Qué pierdes

La carga diferida nativa de imágenes e iframes. Todas las imágenes se descargarán de golpe al cargar la página.

Qué ganas

Evitas conflictos con plugins que implementan su propio lazy loading y que pueden funcionar mejor o con más opciones que el nativo.

Código

// Desactiva el lazy loading nativo de WordPress
add_filter( 'wp_lazy_loading_enabled', '__return_false' );

Cómo comprobar que funciona

Abre el código fuente de una página con imágenes y busca loading="lazy". No debería aparecer en las etiquetas de imagen.

Fetchpriority en imagen destacada

Qué es y para qué sirve

Desde WordPress 6.3, la primera imagen del contenido (normalmente la imagen destacada) recibe automáticamente el atributo fetchpriority="high", que le indica al navegador que la descargue con prioridad alta. Es una mejora de rendimiento pensada para que la imagen principal se cargue lo antes posible.

¿Es seguro desactivarlo?

Solo si tu plugin de rendimiento o caché gestiona la priorización de imágenes de forma propia y hay conflictos. En la mayoría de casos es mejor dejarlo activado.

Qué pierdes

La priorización automática de la imagen principal en la carga del navegador.

Qué ganas

Evitas conflictos si otra herramienta ya gestiona la priorización de recursos de forma más completa.

Código

// Desactiva el atributo fetchpriority automático de WordPress
function ayudawp_desactivar_fetchpriority( $loading_attrs, $tag_name, $context ) {
    if ( isset( $loading_attrs['fetchpriority'] ) ) {
        unset( $loading_attrs['fetchpriority'] );
    }
    return $loading_attrs;
}
add_filter( 'wp_get_loading_optimization_attributes', 'ayudawp_desactivar_fetchpriority', 10, 3 );

Cómo comprobar que funciona

Abre el código fuente de una entrada con imagen destacada y busca fetchpriority. No debería aparecer en ninguna etiqueta de imagen.

Avatares y Gravatar

Qué es y para qué sirve

WordPress muestra avatares de los usuarios junto a sus comentarios, en el escritorio y en otros elementos. Por defecto usa Gravatar, un servicio externo que asocia una imagen a una dirección de correo electrónico. Cada avatar requiere una petición HTTP externa al servidor de Gravatar.

¿Es seguro desactivarlo?

Sí. Es una cuestión de prioridades: si prefieres rendimiento y privacidad sobre la personalización visual de los comentarios puedes desactivarlos sin problemas.

Qué pierdes

Las imágenes de avatar junto a los comentarios y en el escritorio. Se mostrarán los avatares por defecto o ningún avatar, según la implementación de tu tema.

Qué ganas

Eliminas las peticiones HTTP externas al servidor de Gravatar, lo cual mejora el rendimiento (especialmente en páginas con muchos comentarios) y mejora la privacidad de tus visitantes al no compartir sus correos electrónicos con un servicio externo.

Código

// Desactiva los avatares y las peticiones a Gravatar
add_filter( 'option_show_avatars', '__return_zero' );

Cómo comprobar que funciona

Abre una entrada con comentarios y comprueba que no se cargan imágenes de avatar. En las herramientas de desarrollo, pestaña de red, busca peticiones a gravatar.com o secure.gravatar.com. No debería haber ninguna.

Versión de query strings en scripts y CSS

Qué es y para qué sirve

WordPress añade un parámetro de versión (?ver=6.7.2) a las URLs de los archivos CSS y JavaScript que encola. Esto se usa como mecanismo de omisión de caché para que cuando cambia la versión los navegadores descarguen de nuevo el archivo en vez de usar la versión en caché.

¿Es seguro desactivarlo?

Sí, con un matiz. Algunas CDN y servicios de caché funcionan mejor sin query strings en las URLs estáticas. Pero al eliminar las query strings, si actualizas un plugin o tema, los navegadores podrían seguir usando la versión en caché antigua hasta que expire. Esto se resuelve vaciando la caché del servidor o CDN tras cada actualización.

Qué pierdes

La omisión de caché automática por versión. Tras actualizar plugins o temas puede que los visitantes vean los archivos CSS y JS antiguos hasta que se renueve la caché.

Qué ganas

Mejor compatibilidad con CDN y proxies que no cachean recursos con query strings, y URLs más limpias en los recursos estáticos.

Código

// Elimina las query strings de versión de scripts y CSS
function ayudawp_eliminar_version_scripts( $src ) {
    if ( strpos( $src, '?ver=' ) !== false ) {
        $src = remove_query_arg( 'ver', $src );
    }
    return $src;
}
add_filter( 'script_loader_src', 'ayudawp_eliminar_version_scripts', 15 );
add_filter( 'style_loader_src', 'ayudawp_eliminar_version_scripts', 15 );

Cómo comprobar que funciona

Abre las herramientas de desarrollo, pestaña de red, y recarga la página. Las URLs de los archivos .js y .css no deberían tener el parámetro ?ver= al final.

Revisiones de entradas

Qué es y para qué sirve

WordPress guarda automáticamente una copia de cada cambio que haces en una entrada o página, lo que permite deshacer modificaciones y volver a versiones anteriores. Por defecto no hay límite en el número de revisiones, así que con el tiempo tu base de datos puede acumular miles de registros.

¿Es seguro desactivarlo o limitarlo?

Limitarlo es seguro y recomendable. Desactivarlo completamente también es seguro pero pierdes la red de seguridad de poder deshacer cambios. Lo más sensato es limitar a un número razonable.

Qué pierdes

Si lo limitas, solo las revisiones más antiguas más allá del límite. Si lo desactivas, toda la capacidad de deshacer cambios.

Qué ganas

Una base de datos más ligera y consultas más rápidas. En sitios con mucho contenido editorial, la tabla wp_posts puede reducirse significativamente.

Código (wp-config.php)

// Limita las revisiones a 5 por entrada (ajusta el número a tu gusto)
define( 'WP_POST_REVISIONS', 5 );

// O para desactivarlas por completo:
// define( 'WP_POST_REVISIONS', false );

Cómo comprobar que funciona

Edita una entrada y guárdala varias veces. En la columna lateral del editor, sección «Revisiones», comprueba que no se acumulan más del número que hayas configurado.

Papelera automática

Qué es y para qué sirve

Cuando borras una entrada, página o comentario, WordPress lo envía a la papelera en vez de eliminarlo definitivamente. Por defecto, los elementos en la papelera se eliminan automáticamente después de 30 días.

¿Es seguro modificarlo?

Sí. Puedes reducir el periodo o incluso eliminarlo para que los elementos se borren inmediatamente. Si reduces a muy pocos días, ten en cuenta que pierdes el margen de recuperación.

Qué pierdes

El margen de tiempo para recuperar contenido borrado accidentalmente. Si lo pones a 0, el borrado es inmediato y definitivo.

Qué ganas

Menos registros acumulados en la base de datos y un sitio más limpio.

Código (wp-config.php)

// Vacía la papelera cada 7 días en vez de 30 (ajusta a tu gusto)
define( 'EMPTY_TRASH_DAYS', 7 );

// O para desactivar la papelera (borrado inmediato definitivo):
// define( 'EMPTY_TRASH_DAYS', 0 );

Cómo comprobar que funciona

Envía una entrada a la papelera y espera el número de días configurado. Pasado ese tiempo, la entrada debería desaparecer automáticamente de la papelera.

WP-Cron (cron virtual de WordPress)

Qué es y para qué sirve

WordPress no tiene acceso al cron real del servidor así que implementa su propio sistema de tareas programadas (WP-Cron) que se ejecuta cada vez que alguien visita tu web. Comprueba si hay tareas pendientes (publicaciones programadas, actualizaciones, envíos de correos, etc.) y las ejecuta. El problema es que depende del tráfico, así que si nadie visita tu web las tareas no se ejecutan, y si hay mucho tráfico se comprueban demasiadas veces.

¿Es seguro desactivarlo?

Sí, pero solo si configuras un cron real del servidor que lo sustituya. Si lo desactivas sin configurar la alternativa las tareas programadas dejarán de ejecutarse. La mayoría de hosting WordPress de calidad permiten configurar un cron real desde su panel de control.

Qué pierdes

La ejecución automática de tareas basada en visitas. Necesitas un cron real del servidor como sustituto.

Qué ganas

Un sistema de tareas programadas más fiable y predecible que no depende del tráfico, y un ahorro de recursos en cada visita al no tener que comprobar si hay tareas pendientes.

Código (wp-config.php)

// Desactiva el cron virtual de WordPress
define( 'DISABLE_WP_CRON', true );

Después necesitas configurar un cron real en tu servidor que ejecute wp-cron.php periódicamente. En la mayoría de paneles de hosting puedes añadir una tarea cron con este comando:

*/15 * * * * wget -q -O - https://tu-dominio.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Esto ejecuta el cron cada 15 minutos, lo cual es suficiente para la mayoría de sitios. Ajusta la frecuencia según tus necesidades.

Cómo comprobar que funciona

Programa una entrada para que se publique dentro de unos minutos. Si se publica a la hora prevista sin que nadie visite la web, el cron del servidor está funcionando correctamente.

Emails nativos de WordPress

Qué es y para qué sirve

WordPress envía por defecto un buen número de correos electrónicos automáticos en distintas situaciones, como cuando alguien se registra, cuando se restablece una contraseña, cuando hay un nuevo comentario pendiente de moderación, cuando se cambia la dirección de correo del administrador, cuando la salud del sitio detecta problemas, etc. En total son más de una docena de correos diferentes que se envían sin que tú lo hayas pedido expresamente.

¿Es seguro desactivarlos?

Depende de cuáles. Algunos son prescindibles (como el aviso al administrador de que un usuario ha cambiado su contraseña), otros son importantes para el funcionamiento del sitio (como el correo de restablecimiento de contraseña). Lo recomendable es revisarlos uno a uno y desactivar solo los que no aportan nada en tu caso.

Qué pierdes
Las notificaciones por correo que desactives. Si desactivas los correos de moderación de comentarios, por ejemplo, tendrás que acordarte de revisar la cola de moderación manualmente.

Qué ganas
Menos correos automáticos en tu bandeja (y en la de los usuarios del sitio), menor carga del servidor en el envío de emails y una experiencia más limpia si gestionas muchos sitios.

Código
Cada email de WordPress se puede desactivar de forma individual mediante filtros y acciones específicas. Tienes la lista completa de todos los emails que envía WordPress y cómo desactivar cada uno en esta guía de cómo desactivar o configurar todos los emails de WordPress.

Cómo comprobar que funciona

Reproduce la acción que dispara el email que hayas desactivado (crear un usuario, cambiar una contraseña, publicar un comentario, etc.) y comprueba que ya no llega el correo correspondiente.

Widgets del escritorio: eventos y noticias de WordPress

Qué es y para qué sirve

El escritorio de WordPress incluye varios widgets informativos por defecto. Uno de ellos, «Eventos y noticias de WordPress», hace peticiones externas a la API de WordPress.org para mostrar meetups, WordCamps y noticias del proyecto. Otros widgets como «De un vistazo», «Actividad» o «Borrador rápido» consumen recursos consultando la base de datos.

¿Es seguro desactivarlo?

Sí. Son paneles informativos no funcionales. El escritorio de administración funciona exactamente igual sin ellos.

Qué pierdes

Los paneles informativos del escritorio. Toda la información que muestran está disponible en otras secciones de la administración o directamente en WordPress.org.

Qué ganas

Un escritorio más rápido al cargar, especialmente el widget de eventos y noticias que hace peticiones externas a la API de WordPress.org.

Código

// Elimina widgets innecesarios del escritorio de WordPress
function ayudawp_limpiar_escritorio() {
    // Eventos y noticias de WordPress (hace peticiones externas)
    remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
    // Borrador rápido
    remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
    // Panel de bienvenida de WordPress
    remove_action( 'welcome_panel', 'wp_welcome_panel' );

    // Descomenta los siguientes si tampoco los necesitas:
    // De un vistazo
    // remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
    // Actividad
    // remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );
    // Estado de salud del sitio
    // remove_meta_box( 'dashboard_site_health', 'dashboard', 'normal' );
}
add_action( 'wp_dashboard_setup', 'ayudawp_limpiar_escritorio' );

Cómo comprobar que funciona

Accede al escritorio de WordPress. Los widgets que hayas desactivado ya no deberían aparecer. Si abres las herramientas de desarrollo y monitorizas la red, no deberías ver peticiones a api.wordpress.org/events.

Opcionales avanzadas

Aquí vamos a ver módulos completos de WordPress que puedes no necesitar según tu proyecto. Son cambios más profundos que afectan a la estructura y funcionalidad de tu sitio, así que asegúrate de que entiendes las implicaciones antes de aplicarlos.

Desactivar comentarios completamente

Qué es y para qué sirve

Los comentarios son una de las funcionalidades originales de WordPress. Permiten que los visitantes dejen respuestas debajo de tus entradas y páginas. Incluyen formularios, moderación, notificaciones, cajas meta en el editor, endpoints REST, widgets y menús en el administrador.

¿Es seguro desactivarlo?

Sí, si tu sitio no necesita interacción con los visitantes mediante comentarios. Muchas webs corporativas, porfolios, landing pages o tiendas online no los usan.

Qué pierdes

Toda la funcionalidad de comentarios: formularios, listados, moderación, widgets y los comentarios existentes dejarán de mostrarse (aunque se mantienen en la base de datos).

Qué ganas

Eliminas todo un módulo de WordPress con sus consultas a base de datos, formularios, scripts, estilos, endpoints REST y superficie de ataque asociada (spam, XSS, etc.).

Código

// Desactiva los comentarios completamente en todo el sitio
function ayudawp_desactivar_comentarios() {
    // Cierra los comentarios en todos los tipos de contenido
    add_filter( 'comments_open', '__return_false', 20, 2 );
    add_filter( 'pings_open', '__return_false', 20, 2 );

    // Oculta los comentarios existentes
    add_filter( 'comments_array', '__return_empty_array', 10, 2 );

    // Elimina los meta boxes de comentarios en el editor
    $tipos = get_post_types();
    foreach ( $tipos as $tipo ) {
        remove_meta_box( 'commentstatusdiv', $tipo, 'normal' );
        remove_meta_box( 'commentsdiv', $tipo, 'normal' );
    }
}
add_action( 'admin_init', 'ayudawp_desactivar_comentarios' );

// Elimina el menú de Comentarios del escritorio
function ayudawp_eliminar_menu_comentarios() {
    remove_menu_page( 'edit-comments.php' );
}
add_action( 'admin_menu', 'ayudawp_eliminar_menu_comentarios' );

// Elimina el enlace de Comentarios de la barra de administración
function ayudawp_eliminar_comentarios_admin_bar( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( 'comments' );
}
add_action( 'admin_bar_menu', 'ayudawp_eliminar_comentarios_admin_bar', 999 );

// Redirige cualquier acceso directo a la página de comentarios
function ayudawp_redirigir_pagina_comentarios() {
    global $pagenow;
    if ( 'edit-comments.php' === $pagenow ) {
        wp_safe_redirect( admin_url() );
        exit;
    }
}
add_action( 'admin_init', 'ayudawp_redirigir_pagina_comentarios' );

// Desactiva el widget de comentarios recientes
function ayudawp_desactivar_widget_comentarios() {
    unregister_widget( 'WP_Widget_Recent_Comments' );
}
add_action( 'widgets_init', 'ayudawp_desactivar_widget_comentarios' );

Cómo comprobar que funciona

Comprueba que el menú «Comentarios» ya no aparece en el escritorio. Abre cualquier entrada en la parte visible de la web y verifica que no se muestra el formulario de comentarios. Intenta acceder directamente a tudominio.com/wp-admin/edit-comments.php y debería redirigirte al escritorio.

Anidamiento de comentarios

Qué es y para qué sirve

WordPress permite que los comentarios se aniden en hilos de conversación (respuestas a respuestas). Se configura en «Ajustes > Comentarios» y carga un script JavaScript adicional (comment-reply.js) para gestionar la funcionalidad de responder a un comentario específico.

¿Es seguro desactivarlo?

Sí. Los comentarios seguirán funcionando, simplemente se mostrarán todos en una lista plana sin hilos. El botón «Responder» debajo de cada comentario individual desaparece.

Qué pierdes

La estructura de hilos de conversación en los comentarios. Todos los comentarios se muestran al mismo nivel.

Qué ganas

Un script JavaScript menos en la web y una estructura de comentarios más sencilla.

Código

// Desactiva el anidamiento de comentarios y el script asociado
function ayudawp_desactivar_anidamiento_comentarios() {
    wp_dequeue_script( 'comment-reply' );
}
add_action( 'wp_enqueue_scripts', 'ayudawp_desactivar_anidamiento_comentarios' );

// Fuerza la opción a nivel de base de datos
add_filter( 'option_thread_comments', '__return_zero' );

Cómo comprobar que funciona

Abre una entrada con comentarios. No debería aparecer el botón «Responder» debajo de cada comentario individual. En las herramientas de desarrollo, comprueba que comment-reply.min.js no se carga.

Quitar entradas y dejar solo páginas

Qué es y para qué sirve

Las entradas (posts) son uno de los dos tipos de contenido principales de WordPress, pensadas para contenido cronológico como artículos de blog. Si tu sitio es corporativo, un porfolio, una página de destino o cualquier proyecto que solo necesite páginas estáticas, las entradas sobran.

¿Es seguro desactivarlo?

Sí, siempre que no tengas entradas publicadas que necesites mantener accesibles. Si tienes contenido publicado como entradas migra primero ese contenido a páginas o a un tipo de contenido personalizado.

Qué pierdes

La capacidad de crear entradas de blog, las categorías, las etiquetas, el menú de Entradas del escritorio y todo lo asociado al contenido cronológico de WordPress.

Qué ganas

Un escritorio más limpio y enfocado, sin opciones que no vas a usar. Menos confusión para los usuarios del sitio.

Código

// Elimina las entradas (posts) del escritorio de WordPress
function ayudawp_eliminar_entradas() {
    remove_menu_page( 'edit.php' );
}
add_action( 'admin_menu', 'ayudawp_eliminar_entradas' );

// Elimina el enlace de «Nuevo > Entrada» de la barra de administración
function ayudawp_eliminar_nueva_entrada_admin_bar( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( 'new-post' );
}
add_action( 'admin_bar_menu', 'ayudawp_eliminar_nueva_entrada_admin_bar', 999 );

// Redirige el acceso directo a la pantalla de entradas
function ayudawp_redirigir_pantalla_entradas() {
    global $pagenow;
    if ( 'edit.php' === $pagenow && ( ! isset( $_GET['post_type'] ) || 'post' === $_GET['post_type'] ) ) {
        wp_safe_redirect( admin_url() );
        exit;
    }
}
add_action( 'admin_init', 'ayudawp_redirigir_pantalla_entradas' );

Cómo comprobar que funciona

Comprueba que el menú «Entradas» ya no aparece en el escritorio. Intenta acceder a tu-dominio.com/wp-admin/edit.php directamente y debería redirigirte al escritorio. En la barra de administración, al hacer clic en «Nuevo», no debería aparecer la opción «Entrada».

Quitar páginas y dejar solo entradas

Qué es y para qué sirve

Las páginas son el otro tipo de contenido principal de WordPress, pensadas para contenido estático como «Acerca de», «Contacto» o «Servicios». Si tu proyecto es puramente un blog o una revista digital, puede que no necesites páginas.

¿Es seguro desactivarlo?

Sí, pero ten en cuenta que la página de inicio, la página del blog, la página de privacidad y otras pueden estar configuradas como páginas. Antes de desactivarlas, revisa la configuración de «Ajustes > Lectura» y «Ajustes > Privacidad».

Qué pierdes

La capacidad de crear páginas estáticas. Todo el contenido tendrá que ser entradas o tipos de contenido personalizado.

Qué ganas

Un escritorio más limpio si tu proyecto solo usa entradas.

Código

// Elimina las páginas del escritorio de WordPress
function ayudawp_eliminar_paginas() {
    remove_menu_page( 'edit.php?post_type=page' );
}
add_action( 'admin_menu', 'ayudawp_eliminar_paginas' );

// Elimina el enlace de «Nuevo > Página» de la barra de administración
function ayudawp_eliminar_nueva_pagina_admin_bar( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( 'new-page' );
}
add_action( 'admin_bar_menu', 'ayudawp_eliminar_nueva_pagina_admin_bar', 999 );

Cómo comprobar que funciona

Comprueba que el menú «Páginas» ya no aparece en el escritorio. En la barra de administración, la opción «Página» no debería aparecer en el menú «Nuevo».

Herramientas de privacidad

Qué es y para qué sirve

Desde WordPress 4.9.6, se incluyen herramientas integradas para cumplir con el RGPD y normativas similares: una página de política de privacidad, un sistema para exportar datos personales y otro para borrarlos. Estas herramientas aparecen en «Ajustes > Privacidad» y en «Herramientas > Exportar/Borrar datos personales».

¿Es seguro desactivarlo?

Solo si tu sitio no recoge datos personales de ningún tipo (ni comentarios, ni formularios, ni registro de usuarios, ni WooCommerce, ni nada). Si tienes cualquier tipo de interacción con datos personales necesitas estas herramientas o una alternativa equivalente para cumplir con la normativa de protección de datos.

Qué pierdes

Las herramientas integradas de gestión de datos personales, la página de privacidad y las funcionalidades de exportación y borrado de datos.

Qué ganas

Menús y páginas de administración más limpios si tu sitio no necesita estas herramientas.

Código

// Elimina las herramientas de privacidad del escritorio
function ayudawp_desactivar_herramientas_privacidad() {
    // Elimina la página de Privacidad de los Ajustes
    remove_submenu_page( 'options-general.php', 'options-privacy.php' );
    // Elimina Exportar datos personales de Herramientas
    remove_submenu_page( 'tools.php', 'export-personal-data' );
    // Elimina Borrar datos personales de Herramientas
    remove_submenu_page( 'tools.php', 'erase-personal-data' );
}
add_action( 'admin_menu', 'ayudawp_desactivar_herramientas_privacidad', 999 );

Cómo comprobar que funciona

Comprueba que en los ajustes ya no aparece la opción «Privacidad» y que en Herramientas no aparecen «Exportar datos personales» ni «Borrar datos personales».

Archivos y páginas de autor

Qué es y para qué sirve

WordPress genera automáticamente una página de archivo para cada autor registrado (normalmente en tudominio.com/author/nombre-usuario/) que lista todas sus publicaciones. También responde a la URL ?author=1, que redirige a la página de autor y de paso revela el nombre de usuario.

¿Es seguro desactivarlo?

Sí. En sitios con un solo autor o donde los archivos de autor no aportan valor es incluso recomendable desactivarlos. Las URLs de autor son además una vía conocida de enumeración de usuarios.

Qué pierdes

Las páginas de archivo de autor y la posibilidad de acceder a ellas mediante la URL. Si tu tema muestra enlaces al archivo del autor en las entradas esos enlaces dejarán de funcionar.

Qué ganas

Cierras otra vía de vulnerabilidad por enumeración de usuarios, y eliminas páginas que en muchos sitios son de contenido duplicado o pobre para los buscadores.

Código

// Desactiva los archivos y páginas de autor
function ayudawp_desactivar_archivos_autor() {
    if ( is_author() ) {
        global $wp_query;
        $wp_query->set_404();
        status_header( 404 );
        nocache_headers();
    }
}
add_action( 'template_redirect', 'ayudawp_desactivar_archivos_autor' );

// Bloquea también la enumeración por ?author=N
function ayudawp_bloquear_enumeracion_autor() {
    if ( ! is_admin() && isset( $_GET['author'] ) ) {
        wp_safe_redirect( home_url(), 301 );
        exit;
    }
}
add_action( 'init', 'ayudawp_bloquear_enumeracion_autor' );

Cómo comprobar que funciona

Accede a tudominio.com/author/tu-usuario/. Debería devolver un error 404. Prueba también con tudominio.com/?author=1, que debería redirigirte a la página de inicio.

Buscador interno de WordPress

Qué es y para qué sirve

WordPress incluye un buscador interno que permite a los visitantes buscar contenido dentro de tu sitio. Genera URLs del tipo ?s=término y una página de resultados. El buscador nativo es bastante básico y en sitios grandes puede generar consultas pesadas a la base de datos.

¿Es seguro desactivarlo?

Sí, si tu sitio no necesita buscador interno o si usas un servicio de búsqueda externo. En webs tipo página de destino, porfolio o sitios con pocas páginas la búsqueda interna no aporta nada.

Qué pierdes

La funcionalidad de búsqueda para los visitantes. Si tu tema incluye un formulario de búsqueda, dejará de devolver resultados.

Qué ganas

Evitas consultas pesadas a la base de datos por búsquedas, cierras un posible vector de ataques (búsquedas malintencionadas que intentan explotar inyecciones SQL o incluso DDOS) y eliminas las páginas de resultados vacías o pobres que los buscadores pueden rastrear.

Código

// Desactiva la búsqueda interna de WordPress
function ayudawp_desactivar_busqueda( $query, $error = true ) {
    if ( is_search() && ! is_admin() ) {
        $query->is_search = false;
        $query->query_vars['s'] = false;
        $query->query['s'] = false;

        if ( $error ) {
            $query->is_404 = true;
        }
    }
}
add_action( 'parse_query', 'ayudawp_desactivar_busqueda' );
add_filter( 'get_search_form', '__return_empty_string' );

Cómo comprobar que funciona

Accede a tu-dominio.com/?s=prueba. Debería devolver un error 404 en lugar de la página de resultados de búsqueda.

Personalizador

Qué es y para qué sirve

El personalizador es la herramienta de personalización visual de WordPress que permite modificar ajustes de los temas clásicos en tiempo real con una vista previa. Con la llegada del editor del sitio en los temas de bloques, el personalizador ha quedado prácticamente en desuso si usas un tema moderno de bloques.

¿Es seguro desactivarlo?

Solo si usas un tema de bloques que funcione con el editor del sitio. Si tu tema clásico depende del personalizador para configurar la cabecera, los colores, los menús u otros ajustes no lo desactives.

Qué pierdes

El acceso al personalizador de WordPress y todas las opciones de tema que estén registradas ahí.

Qué ganas

Un menú de administración más limpio y coherente si usas el editor del sitio para todo.

Código

// Desactiva el Customizer (solo si usas un tema de bloques con editor del sitio)
function ayudawp_desactivar_customizer() {
    remove_action( 'plugins_loaded', '_wp_customize_include', 10 );
    remove_action( 'admin_enqueue_scripts', '_wp_customize_loader_settings' );

    // Elimina el enlace del menú
    add_action( 'admin_menu', function () {
        remove_submenu_page( 'themes.php', 'customize.php' );
    }, 999 );
}
add_action( 'init', 'ayudawp_desactivar_customizer' );

Cómo comprobar que funciona

Con un tema clásico activo intenta acceder a tudominio.com/wp-admin/customize.php. No debería cargarse el personalizador. Comprueba también que en el menú «Apariencia» ya no aparece la opción «Personalizar».

Widgets clásicos

Qué es y para qué sirve

Los widgets clásicos son el sistema antiguo de WordPress para añadir contenido a las barras laterales y áreas de widgets. Desde WordPress 5.8, el sistema de widgets se actualizó para usar bloques. Si usas un tema de bloques los widgets clásicos son completamente innecesarios porque las áreas de widgets se gestionan desde el editor del sitio.

¿Es seguro desactivarlo?

Solo si usas un tema de bloques. Si tu tema clásico depende de widgets en la barra lateral, el pie de página u otras áreas no lo desactives.

Qué pierdes

El acceso a la pantalla de widgets clásicos y la posibilidad de usar widgets heredados. Los temas de bloques no los necesitan.

Qué ganas

Un escritorio más limpio si tu tema gestiona todo desde el editor del sitio.

Código

// Elimina la pantalla de widgets del escritorio (solo si usas tema de bloques)
function ayudawp_eliminar_widgets_clasicos() {
    remove_submenu_page( 'themes.php', 'widgets.php' );
}
add_action( 'admin_menu', 'ayudawp_eliminar_widgets_clasicos', 999 );

Cómo comprobar que funciona

Comprueba que en el menú de apariencia ya no aparece la opción «Widgets».

Conclusión

WordPress es un sistema tremendamente versátil, pero esa versatilidad tiene un coste, que es la carga por defecto funcionalidades pensadas para cubrir todos los escenarios posibles, aunque la mayoría de sitios solo necesitan una pequeña parte de ellas.

No hace falta aplicar todo lo que has visto aquí de golpe, la gracia de tener cada optimización explicada por separado es que puedes elegir las que aplican a tu caso concreto. Empieza por las totalmente prescindibles, que son seguras para cualquier sitio, y ve evaluando el resto según lo que necesites.

Lo importante es que ahora sabes qué hace cada cosa, qué pierdes y qué ganas. Y eso ya es mucho más de lo que la mayoría de usuarios de WordPress sabe sobre lo que funciona en las tripas de su web.

Compartir en redes
Resumir con IA

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en las estrellas para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 9

¡Todavía no hay votos! Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!



Sobre el autor

11 comentarios en “Todas las funcionalidades de WordPress que puedes desactivar o quitar sin romper nada … o casi”

  1. Hola, Fernando:

    ¡Qué pena haberlo leído tan tarde! Ya no son horas de copiar y pegar código, lo haré mañana. Que no será mucho, pero algo mejor funcionará la web.

    Muchas gracias, saludos.

  2. Muchas gracias Fernando, es un gran artículo y muy útil, pero ¿se podría hacer un plugin con casillas de validación y ordenados por «completamente innecesarias» y otros pro «bajo tu responsabilidad» por ej.?.
    Gracias y saludos.

  3. Oye Fernando, y por qué no lo metes todo en un plugin y permites que el administrador active/desactive mediante un checkbox cada una de las funcionalidades que aquí listas? Estaría genial!
    Gracias por tanto contenido de calidad!

  4. Me encantó. Aunque me esperaba un plugin que te los añadiese todos jeje, o poder copiar todo el código de golpe. Tocará ir uno a uno o buscar un truquito para juntar todo y probarlo. Ahora mismo. Aunque algunos ya los usaba.

      1. Por probar, utilicé Claude para hacer un plugin sencillito para activar o desactivar a placer los códigos; si quieres, te lo paso y le das tu toque :).

  5. Excelente, tengo un script con algunos de esos codigos ya ejecutando, pero nunca viene mal sumar nuevos para eliminar features innecesarios

Los comentarios están cerrados.

Scroll al inicio