Códigos para optimizar tu proyecto WordPress

optimizar wordpress

Cuándo optimizar WordPress

Ya has completado el diseño de tu preciosa web y todo está ya listo para ponerla en servicio. Antes de dar por cerrada la fase de codificación, revisa los códigos para optimizar WordPress que incluimos en este artículo. Permitirán que tu web sea mas robusta, mas segura y mas profesional.

No todos los códigos son necesarios para todas las instalaciones. Usa tu criterio para decidir de cuáles se puede beneficiar la tuya.

Generar códigos seguros para tus contraseñas y cookies

Muchas veces creamos una web partiendo del código de otra. No es una mala práctica, pero una cosa que solemos olvidar es dar a nuestra web una serie de identificadores que la conviertan en única.

Estos identificadores afectan a elementos como las cookies que se generen en nuestro sitio, o la forma de codificar las contraseñas.

Generar un juego único de identificadores para tu sitio es muy sencillo:

Generar mis códigos únicos

Lo que obtengas al pulsar el botón debes llevarlo al archivo wp-config.php en la raíz de tu instalación de Word Press. Tu archivo ya incluirá una serie de líneas con estos códigos. Debes remplazar estas líneas por las que hayas generado con la herramienta anterior.

define('AUTH_KEY',         '_[!T4$6i-4rnbV9unc=]aH+`nF)BVPzLwHBH#+;g>jl)@;~Z/>[email protected](3J');
define('SECURE_AUTH_KEY',  '[email protected]|i byYS5mYDzEe3MPh+6A0#%`7~6;1<iQz- 30<jQa|hQt1sXQ7>C:B?G');
define('LOGGED_IN_KEY',    '-T0if:G1`+78gy2V,tD:N[|?]q/R%?oH;[email protected]}R{,>~3$FtB0|+_kw>$');
define('NONCE_KEY',        't:k;][email protected]+H-grka`Gkhm^]l|GE3E] Baa*6QYaCZUr{N?f8CjQ{Uk2Om0gfWQl1');
define('AUTH_SALT',        's/@`bKcc{uZnhR<~<&xX3M+sT%M4IWII&(xNlah*pw-YMs?-Ss5`hU*I( C7+Il%');
define('SECURE_AUTH_SALT', 'rH,W>*|5dJvLV(BXh-hG^g+M-R.bJ+N=9zX`t9|/Y!O99o/[5;ADh.,Y.t=O f|R');
define('LOGGED_IN_SALT',   '+#S^BTp?r1l~R|{.SlorpPy]oN*T78SFVL9C(d=m|[email protected] B|[email protected]&]C');
define('NONCE_SALT',       '[email protected] 9AHwC)30hv-&*wBe8&Ks-964flQ=<L5~hL0hvsG!YLsJ1L|Nio.]2hG_?bjRu');

Nunca hagas público el valor de estas claves para tu instalación de WordPress. Si trabajas para terceras personas, es conveniente que hagas esto al principio del proyecto, para evitar que alguna copia de seguridad pueda contener las claves de una instalación de otro cliente.

Deshabilita el modo DEBUG

Durante la fase de desarrollo de un sitio web con WordPress, es conveniente activar el modo DEBUG, lo que te permitirá identificar errores en el código de tu sitio. Sin embargo, cuando la fase de desarrollo ha terminado, es altamente conveniente deshabilitar este modo.

Revisa tu wp-config.php y verifica que el valor de este setting es false.

define('WP_DEBUG', false);

Además es conveniente que añadas estas dos lineas a continuación para evitar que los mensajes de error se muestren al usuario, pero asegurarse de que vayan al log de tu servidor web, por si necesitas analizarlos.

define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Optimización automática de la base de datos

A veces tras la instalación o el borrado de algún complemento o por algún tipo de error, la base de datos de WordPress queda en un estado incosistente. Cuando esto ocurre, puede que WordPress no te permita identificarte hasta que la base de datos no haya sido optimizada.

Añadiendo esta línea a tu wp-config.php permites que el proceso de reparación de la base de datos se ejecute cuando sea necesario y sin necesidad de que el usuario tenga que identificarse previamente.

define('WP_ALLOW_REPAIR', true);

Este setting permitirá reparar la base de datos de forma automática cuando sea necesario, a través del script /wp-admin/maint/repair.php

Deshabilita las actualizaciones de WordPress, el tema y los plugins

Es conveniente tener tu instalación de WordPress actualizada a la última versión de la plataforma (o a la penúltima), y también es conveniente actualizar tu tema y tus plugins. Sin embargo las actualizaciones deben hacerse con sentido y es necesario que tras actualizar tu sitio realices una prueba de regresión para verificar que nada se ha roto.

Cuando creas webs para terceros, es buena idea evitar que manos inexpertas instalen nuevos plugins o actualicen la web sin tomar las precauciones oportunas.

Añade estas líneas a tu wp-config.php para evitar actualizaciones no controladas del sitio web.

define('AUTOMATIC_UPDATER_DISABLED', true);
define('DISALLOW_FILE_MODS', true);
define('DISALLOW_FILE_EDIT', true);

Comenta estas líneas cuando vayas a realizar una ronda de mantenimiento del sitio, pero recuerda volver a dejarlas activas al finalizar.

Acceso seguro al area de administración

Por mucho que Google se empeñe, la mayoría de las páginas web no necesitan servir sus contenidos a través de un protocolo cifrado. Cuando no hay ningún intercambio de información personal o confidencial de por medio, cifrar las páginas web introduce un coste extra tanto en el servidor web como en el navegador del usuario que no añade absolutamente ninguna seguridad.

Sin embargo hay areas dentro de tu web donde si merece la pena gastar esos ciclos de CPU extra para proteger la confidencialidad. De forma estándar, en una instalación WordPress al menos el area de administración estará bajo esta categoría (dependiendo de la funcionalidad del sitio, es posible que haya mas áreas que requieran de acceso bajo protocolo cifrado).

Para forzar a que el acceso al área de administración de tu WordPress se haga de forma segura, añade estas líneas a tu wp-config.php.

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

Personaliza el mensaje de error de credenciales incorrectos

Un sitio web es muy fácil de atacar con un robot. Para ponerle las cosas difíciles a los chicos malos, es conveniente cambiar el mensaje por defecto que WordPress muestra cuando las credenciales de acceso no son correctas. En ningún caso se debe dar información sobre si una parte de las credenciales son correctas. Indicar que el usuario no existe o que el usuario existe pero su contraseña no es la correcta es dar información de mas a un posible atacante.

Para cambiar el mensaje de error, añade estas líneas al final de tu /wp-content/themes/<tu-tema>/functions.php.

function login_errors_message($error) {
    global $errors;
    $err_codes = $errors-&amp;gt;get_error_codes();

    if (in_array('invalid_username', $err_codes)) {
        $error = 'Ooooops!';
    } elseif (in_array('incorrect_password', $err_codes)) {
        $error = 'Ooooops!';
    }

    return $error;
}
add_filter('login_errors', 'login_errors_message');

Elimina cabeceras innecesarias

WordPress añade una serie de etiquetas en las cabeceras de la página de las que casi nunca se hacen uso. Eliminándolas haremos el proceso de generación y renderización de la página mas rápido.

Estas son las cabeceras que generalmente pueden eliminarse sin menoscabo de la funcionalidad del sitio:

  • wp_generator Muestra una etiqueta indicando que la página web está hecha con WordPress, y su versión
  • rsd_link Muestra un enlace a Really Simple Discovery
  • wlwmanifest_link Permite escribir en nuestro Blog desde Windows Live Writer
  • index_rel_link Etiqueta que indica el Home de nuestra página web
  • parent_post_rel_link Muestra un enlace al post padre, si está definido
  • start_post_rel_link Muestra un enlace a la primera entrada
  • adjacent_posts_rel_link Muestra un enlace a las entradas adyacentes (siguiente, anterior) de la entrada actual
  • wp_shortlink_wp_head Añade una etiqueta con el shortlink, si está definido
  • feed_links Añade enlaces al feed general
  • feed_links_extra Añade enlaces al feed extra como las categorías
  • print_emoji_detection_script Elimina la carga del JavaScript necesario para los emoji icons (comentarios)
  • print_emoji_styles Elimina la carga del CSS necesario para los emoji icons (comentarios)
  • wp_staticize_emoji Convierte los emoji icons en imágenes estáticas

Si no usas estas funciones, añade estas líneas al final de tu /wp-content/themes/<tu-tema>/functions.php (sobre todo las resaltadas).

remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');

Evita que se puedan crear comentarios de forma maliciosa

Permitir que los lectores agreguen comentarios en tu blog es una buena forma de promover la participación. Sin embargo los chicos malos pueden utilizar esta funcionalidad para llenar de spam tu web.

Es recomendable que uses un complemento que filtre el spam como Akismet, y que tengas activados los ajustes de moderación de comentarios en Ajustes > Comentarios.

Además es conveniente que evites que los usuarios incluyan código HTML en los comentarios. Aunque inicialmente se incluyó para que el lector pudiese enfatizar el texto, como poner algo en negrita, la mayor parte de las veces esto se explota para incluir enlaces a sitios de dudosa reputación. Además de poder molestar a otros lectores, estos enlaces pueden dañar la reputación de tu sitio. Te recomiendo por tanto que impidas la interpretación de HTML en los comentarios de tu blog.

Para ello, añade esta líneas al final de tu /wp-content/themes/<tu-tema>/functions.php

add_filter('pre_comment_content', 'wp_specialchars');

Almacenar versiones anteriores de tus artículos

Durante la fase de desarrollo de un nuevo sitio, es posible que hayas deshabilitado el almacenamiento de las sucesivas versiones de tus artículos. Puede ser una buena idea durante las fases iniciales, ya que muchas veces el histórico de versiones no tiene ningún valor y ocupa sitio en la base de datos.

No obstante cuando los contenidos de tu sitio ya hayan tomado forma, es conveniente que verifiques que tienes esta funcionalidad activa y que al menos conservas las tres versiones anteriores de tus entradas. No las revisarás muy a menudo, pero el día que las revises te alegrarás de haberlas guardado.

Añade esta línea a tu wp-config.php.

define('WP_POST_REVISIONS', 3);

Espero que estas ideas te hayan ayudado a optimizar WordPress y a crear una instalación mas robusta, rápida y segura. Si conoces otros trucos orientados a esto mismo, no dudes de hacérnoslo saber a través de un comentario (¡sin HTML Bro!).

buen trabajo