Limpiar la cabecera de WordPress para mejorar el rendimiento

WordPress viene de forma predeterminada con partes del código que pueden no ser necesarias para todas las webs de WordPress. Esto es normal, ya que WordPress necesita abrazar a todos los tipos de sitios web posibles.

Lo que esto significa es que la mayoría de nosotros podríamos deshacernos de código inútil y, por lo tanto, ahorrar algunos bytes en nuestras páginas. O sea, que de hecho estaremos mejorando efectivamente la velocidad de nuestra web.

Primero veamos una por una todas las partes que se pueden eliminar, cómo eliminarlas, y al final del artículo veremos el método para eliminar todo con un simple copiar y pegar.

Todo de lo que hablaremos implica editar un archivo, el archivo functions.php, que se incluye dentro de cada carpeta de tema, en la ruta /wp-content/themes/tu_tema/functions.php. Puedes usar un administrador de archivos para editarlo; la mayoría de los proveedores de alojamiento tienen uno. También es una buena idea crear un tema hijo a partir del tema original y editar el correspondiente functions.php, para que estos cambios no se pierdan en futuras actualizaciones. Si tu tema no viene con una opción para crear un tema hijo, puedes consultar este artículo de WPBeginner.

Eliminar el número de versión de WordPress

Esto definitivamente no es necesario para la parte pública de la web. A nadie debería importarle nuestra versión de WordPress. Además, también es un riesgo para la seguridad. El código es solo esta línea, y no tiene otra función que anunciar nuestro número de versión:

Para eliminarla, simplemente añade la siguiente línea a tu archivo functions.php, justo antes de la etiqueta de cierre ?> (si existe).

remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_null' );

La segunda línea del código anterior no eliminará la versión de la cabecera de la página, sino de los feeds RSS, lo que es una buena idea también.

Eliminar los emojis de WordPress

Desde la versión 4.2, WordPress añadió soporte para emojis en navegadores antiguos, porque estos no saben cómo representarlos adecuadamente. Sin embargo, la versión 4.2 se lanzó en 2015, lo que casi garantiza que ya no se necesita este soporte, ya que casi todo el mundo usa un navegador moderno.

El parche añadido por WordPress hace que tus visitantes carguen un archivo JavaScript adicional (wp-emoji-release.min.js).

Para desactivarlo, edita tu archivo functions.php y añade lo siguiente:

/* Disabling emojis */
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );

/* Removing s.w.org DNS prefetch */
add_filter('wp_resource_hints', function (array $urls, string $relation): array {
    if ($relation !== 'dns-prefetch') {
        return $urls;
    }
    $urls = array_filter($urls, function (string $url): bool {
        return strpos($url, 's.w.org') === false;
    });
    return $urls;
}, 10, 2);

Eliminar wlwmanifest.xml

WordPress añade por defecto esta línea de código, que solo usa Windows Live Writer. Estoy casi seguro de que no lo estás usando, así que deshagámonos de ella.

Edita tu functions.php y añade la siguiente línea:

remove_action( 'wp_head', 'wlwmanifest_link' );

Eliminar el enlace RSD

Citando a Wikipedia, «Really Simple Discovery (RSD) es un formato XML y una convención de publicación para hacer que los servicios expuestos por un blog u otro software web sean detectables por el software del cliente».

En palabras más simples, es un mecanismo que utilizan los clientes XML-RPC para poder trabajar en tu web, sin que realices ningún trabajo en la web real. Algunos ejemplos son:

  • Crear nuevas publicaciones usando TextMate, Flock, Thunderbird y otras aplicaciones
  • Recibir pingbacks y trackbacks de otros sitios.
  • Usar JetPack.
  • Integrar servicios como Flickr, para que puedas recibir fotos desde allí a tu WordPress

Si no sabes qué significa todo esto, si no utilizas ninguna integración de terceros o si estás seguro de que no necesitas la funcionalidad XML-RPC, puedes deshacerte del enlace RSD en tu código de WordPress al añadir lo siguiente en tu functions.php:

remove_action('wp_head', 'rsd_link');

Un enlace corto es, como su nombre indica, una versión más corta de los enlaces de tu página. Por ejemplo, el enlace corto de este artículo es https://accelera.site/?p=3383.

Como puedes imaginar, no es necesario tener esto en el código si está utilizando enlaces «bonitos» como https://www.asistentewp.com/mi-articulo-test. Además, si elimina el enlace corto del código, el enlace corto real seguirá funcionando: solo redirigirá al enlace bueno, que de hecho es el comportamiento que esperamos.

Entonces, para eliminar el enlace corto, añade esto a functions.php:

remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0 );

Eliminar los enlaces de feed RSS

¿Sabes qué es un feed RSS? De lo contrario, es seguro eliminar los enlaces RSS que genera WordPress. Pero para los curiosos, aquí hay una buena explicación de WPBeginner.

Entonces, si no sabes qué son los feeds RSS o sabes que definitivamente puedes desactivarlos, añade lo siguiente al archivo functions.php:

function itsme_disable_feed() {
 wp_die( __( '¡No hay nada por aquí! Vuelve a la página de <a href="'. esc_url( home_url( '/' ) ) .'">inicio</a>!' ) );
}
add_action('do_feed', 'itsme_disable_feed', 1);
add_action('do_feed_rdf', 'itsme_disable_feed', 1);
add_action('do_feed_rss', 'itsme_disable_feed', 1);
add_action('do_feed_rss2', 'itsme_disable_feed', 1);
add_action('do_feed_atom', 'itsme_disable_feed', 1);
add_action('do_feed_rss2_comments', 'itsme_disable_feed', 1);
add_action('do_feed_atom_comments', 'itsme_disable_feed', 1);

Pero esto no eliminará los enlaces a los feeds RSS que WordPress añade automáticamente en la cabecera del código fuente HTML.

Para hacer eso, también tienes que añadir las siguientes dos líneas:

remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );

Eliminar la etiqueta meta robots duplicada

A partir de WordPress 5.7, el equipo de desarrolladores añadió una nueva función wp_robots() que permite jugar con la etiqueta meta de robots.

La etiqueta meta de robots es una línea añadida al código de la página que proporciona instrucciones a los motores de búsqueda sobre cómo rastrear o indexar la web. Por defecto, WordPress lo añade con un valor de max-image-preview:large, y eso ya está bien si es la única etiqueta meta de robots en tu sitio. Pero si ya la tienes (gracias a un plugin de SEO o porque la has añadido manualmente), podrías acabar con etiquetas meta de robots duplicadas, lo que podría afectar a tu SEO, además de añadir contenido innecesario a tu código.

Para comprobar si es tu caso, simplemente abre tu página de inicio, presiona Ctrl+U para abrir el código fuente y luego Ctrl+F para buscar la cadena “robots”. Solo deberías encontrar una. Aquí hay un ejemplo con etiquetas de robots duplicadas:

Para desactivar la etiqueta de robots añadida por WordPress, simplemente añade lo siguiente a tu functions.php:

remove_filter('wp_robots', 'wp_robots_max_image_preview_large');

Limpiar el <head> de WordPress en un solo paso

Si combinamos todo lo anterior en un solo paso, nos queda el siguiente código para añadir en el archivo functions.php:

/* Eliminar version de WordPress */
remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_null' );

/* Desactivar emojis */
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );

/* Quitar s.w.org DNS prefetch */
add_filter('wp_resource_hints', function (array $urls, string $relation): array {
    if ($relation !== 'dns-prefetch') {
        return $urls;
    }
    $urls = array_filter($urls, function (string $url): bool {
        return strpos($url, 's.w.org') === false;
    });
    return $urls;
}, 10, 2);

/* Quitar wlwmanifest.xml */
remove_action( 'wp_head', 'wlwmanifest_link' );

/* Quitar RSD */
remove_action('wp_head', 'rsd_link');

/* Quitar shortlink */
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0 );

/* Quitar feeds RSS y links de feeds RSS */
function itsme_disable_feed() {
 wp_die( __( 'Nothing here! Please go back to the <a href="'. esc_url( home_url( '/' ) ) .'">homepage</a>!' ) );
}
add_action('do_feed', 'itsme_disable_feed', 1);
add_action('do_feed_rdf', 'itsme_disable_feed', 1);
add_action('do_feed_rss', 'itsme_disable_feed', 1);
add_action('do_feed_rss2', 'itsme_disable_feed', 1);
add_action('do_feed_atom', 'itsme_disable_feed', 1);
add_action('do_feed_rss2_comments', 'itsme_disable_feed', 1);
add_action('do_feed_atom_comments', 'itsme_disable_feed', 1);
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );

/* Quitar etiqueta meta duplicada de robots */
remove_filter('wp_robots', 'wp_robots_max_image_preview_large');

En esta entrada pueden haber enlaces de afiliado a productos y servicios en los que a veces podrás obtener descuentos si compras algo, y yo, como autor de la entrada, una pequeña comisión. No te preocupes, nunca pagarás de más y nunca verás enlaces de afiliados de algo que yo mismo no utilice o recomiende.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *