Clicky

Cosas que debes hacer después de instalar WordPress

WordPress logo

25 tips para optimizar, asegurar y mejorar la carga de páginas con Wordpress

Se necesitan dos pasos para instalar WordPress pero se pueden ajustar algunos de los parámetros predeterminados para optimizar aún más el rendimiento y mejorar la seguridad de tu sitio web con WordPress.

Estas recomendaciones son sólo aplicables a los sitios que se han instalado con el paquete de WordPressg.org y no los blogs que están alojados en WordPress.com. Además, supongo que estás ejecutando WordPress en Apache. Vamos a empezar (antes, como siempre, hacer una copia de seguridad de base de datos y directorios de archivos):

1. Cambia la carpeta de subidas de los archivos multimedia por defecto (uploads)

La instalación por defecto de WordPress va a almacenar todas sus imágenes, documentos y otros archivos dentro de la carpeta wp-content/uploads.

Siempre es una buena idea almacenar tus imágenes fuera de la carpeta de WordPress, preferiblemente en un sub-dominio. Esto ofrece algunas ventajas. Las URLs de las imágenes serán relativamente cortas, las copias de seguridad diarias de WordPress serán más manejables y, lo más importante, se sirven las imágenes desde un dominio diferente, lo que permitirá descargas paralelas y por lo tanto mejorar el tiempo de carga de la página (ver Reglas de rendimiento Yahoo).

WordPress 3.5 (o posterior) no ofrece por defecto una opción para cambiar la carpeta de carga multimedia, pero hay un plug-in para hacer nuevos ajustes. También se debe anular la selección de la opción - "Organizar mis archivos basados en carpetas de mes y año".

2. Elimina meta-datos innecesarios de tu sitio de WordPress

Si nos fijamos en el código fuente HTML de tu sitio de WordPress, encontrarás un par de meta etiquetas que no son realmente necesarias. Por ejemplo, la versión del software de WordPress que se ejecuta en el servidor se puede recuperar fácilmente observando la cabecera de origen.

<meta name="generator" content="WordPress 3.5.1" />

Esta información es un buen indicio para los piratas de WordPress que buscan dirigirse a los blogs que utilizan las versiones más antiguas y menos seguras del software WordPress. Para eliminar por completo el número de versión y otros meta-datos no esenciales de la cabecera de WordPress, agrega este código al archivo functions.php que se encuentra en la carpeta /themes/tu-tema de WordPress:

remove_action( 'wp_head', 'wp_generator' ) ; 
remove_action( 'wp_head', 'wlwmanifest_link' ) ;
remove_action( 'wp_head', 'rsd_link' ) ;

La función WLW-Manifest (línea 2) es utilizada por Windows Live Writer para descargar los estilos/temas (styles / themes) utilizados en tu página de WordPress. Los usuarios de Windows Live Writer que no utilizan la función de vista previa en vivo pueden desactivar esta función.

3. Impide que la gente navegue por la estructura de carpetas de WordPress

Puesto que no quisieras que nadie busque tus archivos y carpetas de WordPress en la vista del explorador en los navegadores web, añade la siguiente línea a tu archivo .htaccess que existe en el directorio de instalación de WordPress.

Options All -Indexes

También asegúrate de que hay un index.php en blanco en las carpetas wp-content/themes y wp-content/plugins del directorio de WordPress. Por defecto Wordpress instala un archivo index.php con estas líneas:

<?php
// Silence is golden. (El silencio es oro)
?>

4. Desactivar HTML en comentarios WordPress

El cuadro de comentarios es en WordPress un mini editor de HTML y los comentaristas pueden utilizar algunas etiquetas HTML como <b>, <a>, <i>, para formatear sus comentarios. Incluso pueden agregar hipervínculos en su comentario. Si no deseas HTML en los comentarios de WordPress, añade este fragmento en el archivo functions.php de tu theme.

add_filter( 'pre_comment_content', 'wp_specialchars' );

5. Deshabilita las revisiones de post en WordPress

WordPress incluye una útil revisión de documentos que ofrecen ayuda para rastrear los cambios y también poder volver a cualquier versión anterior de tu blog. No obstante, las revisiones de post aumentan el tamaño de la tabla wp_posts de WordPress, que añade una fila adicional con cada revisión.

Para desactivar el mensaje revisiones en WordPress, abre el archivo wp-config.php en el directorio de WordPress y añade la siguiente línea:

define( 'WP_POST_REVISIONS', false);

Alternativamente, si desea mantener la funcionalidad de revisiones de post, puedes limitar sólo el número de revisiones de post que WordPress almacena en la base de datos MySQL. Añade esta línea al archivo wp-config.php :

define( 'WP_POST_REVISIONS', 3);

Referencia: Edición de wp-config.php (WordPress Codex)

6. Cambia el intervalo de guardado automático de post

Al editar una entrada de blog en el editor de WordPress, se auto-almacenan los borradores tipo y esto te ayudará a recuperar tu trabajo en caso de que el navegador se bloquee. Los borradores se guardan cada minuto, pero puedes cambiar la duración predeterminada, por ejemplo a 120 segundos (o 2 minutos), mediante la adición de una línea en el archivo wp-config.php :

define( 'AUTOSAVE_INTERVAL', 120 );

7. Ocultar los feeds secundarios de WordPress

La sindicación de múltiples RSS Feeds de WordPress - feed de blog, feed de artículo, feed de los comentarios, feeds de las categorías, feeds de archivo, etc. - son auto-detectables, ya que se incluyen en la cabecera HTML de las páginas del blog con el meta tag <link>.

Si lo que deseas es dar a conocer sólo tus feeds principales, añade estas líneas a tu archivo functions.php:

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

8. Redireccionar todos los feeds al fedd RSS principal

En el paso anterior, simplemente quitamos la impresión de los feeds RSS dentro del header, pero los feeds RSS todavía existen. Si te gustaría tener una fuente RSS servida a través de FeedBurner y desactivar todos los otros feeds, añade esto a su archivo .htaccess . Recuerda reemplazar la URL del feed con el tuyo propio.

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
 RewriteRule ^feed/?.*$ http://feeds.feedburner.com/videosvirales [L,NC,R=301]  ## Cambia la URL de FeedBurner por la tuya
</IfModule>

Existe la posibilidad de al hacer este cambio reciban un error 500 en el sitio, si se produce vas a tener que "envolver" el código de los enlaces permanentes de WordPress junto con la redirección de FeedBurner, de modo que el código les quedaría como el siguiente:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/videosvirales [L,NC,R=301]  ## Cambia la URL de FeedBurner por la tuya
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

También se puede hacer de esta manera, que es la que yo uso:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner
RewriteRule ^index\.xml$ http://feeds.feedburner.com/videosvirales [R,L]  ## Cambia la URL de FeedBurner por la tuya

Algunos temas, como el tema Video de Templatic Team que yo uso, dan la opción de poner tu feed de FeedBurner desde la apariencia del tema:

feeds de FeedBurner para WordPress

Esto coloca en el archivo header de tu tema la siguiente línea, eliminando la línea de feeds por defecto en WordPress:

<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="/<?php if ( get_option('ptthemes_feedburner_url') <> "" ) 
{ echo get_option('ptthemes_feedburner_url'); } else { echo get_bloginfo_rss('rss2_url'); } ?>" />

9. Ocultar los errores en la pantalla de Inicio de sesión de WordPress

Cuando al iniciar sesión en WordPress se escribe un nombre de usuario que no existe o una contraseña incorrecta, saltará un mensaje de error muy detallado que te dice exactamente si tu nombre de usuario es incorrecto o la contraseña no coincide. Eso es malo.

Agrega esto a su archivo functions.php para ocultar todas las advertencias relacionadas con el inicio de sesión y que se muestren en pantalla :

function no_errors_please(){
  return '¡Sal de mi jardín! ¡AHORA MISMO!';
}
add_filter( 'login_errors', 'no_errors_please' );

10. Habilitar 2 factores de autenticación

Esto es altamente recomendable. Si alguien se apodera de tus credenciales de WordPress, todavía necesitará tu número de teléfono móvil para entrar en tu panel de WordPress.

A diferencia de Dropbox o Google, la autenticación en 2 pasos aún no es parte de WordPress, pero siempre puedes utilizar plugins. Authy es popular para habilitar la autenticación con 2 factores, aunque prefiero Authenticator, ya que se puede utilizar con la aplicación oficial de Google Authenticator.

11. Cambiar la estructura de los Enlaces permanentes

No utilices la estructura por defecto de los Enlaces permanentes de WordPress, ya que es mala para el SEO.

Ir a Ajustes -> Enlaces permanentes dentro de tu panel de WordPress y cambia la estructura de los "Ajustes de los enlaces permanentes" de WordPress . La estructura recomendada, desde el punto de vista SEO y rendimiento, es:

/%post_id%/%postname%

Yo tengo puesta una diferente en Vídeos virales:

/%category%/%postname%/

Si tu archivo .htaccess tuviera permisos de escritura los cambios se harían automáticamente, pero si no fuera así, aquí tienes las reglas de mod_rewrite que debes agregar manualmente a tu archivo .htaccess :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

12. Añadir el favicon y los iconos táctiles de Apple que faltan

Tu tema de WordPress puede que no incluya referencias al favicon (favicon.ico) o los iconos táctiles de Apple pero los navegadores web y lectores de feeds todavía pueden solicitarlas a tu servidor. Siempre es mejor servir un archivo que devolver un error 404.

Pon un archivo favicon.ico de 16×16px y otro apple-touch.png de 144x144px en el directorio principal de tu blog. A continuación, añade esta línea a tu archivo .htaccess para redirigir todas las peticiones al icono táctil de Apple a ese archivo en particular.

RedirectMatch 301 /apple-touch-icon(.*)?.png http://ejemplo.com/apple-touch.png  ## cambia ejemplo.com por tu URL

13. No permitir la indexación de scripts WordPress

Tu quieres que Google y otros motores de búsqueda rastreen e indexen las páginas del blog, pero no los diferentes scripts PHP que han sido utilizados por WordPress o los diversos plugins y themes.

Abre el archivo robots.txt en el directorio principal de WordPress y añade estas líneas para bloquear la indexación por los robots de las cosas backend de WordPress.

# global
User-agent: *
Disallow: /cgi-bin/
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/cache/
Disallow: /wp-content/themes/
Disallow: /trackback/
Disallow: /feed/
Disallow: /comments/
Disallow: /category/*/*
Disallow: */trackback/
Disallow: */feed/
Disallow: */comments/
Disallow: /*?

14. Cambia el perfil del Administrador a Suscriptor (hacerlo con cuidado no se te vaya a bloquear el acceso)

Si tu nombre de usuario de WordPress es "admin", crea un nuevo usuario y otórgale privilegios de administrador. Ahora cierra sesión de WordPress, inicia sesión como el nuevo usuario y cambia el privilegio de usuario "admin" de Administrador a Suscriptor.

Puedes incluso considerar eliminar el usuario "admin" y transferir los posts/páginas existentes al nuevo usuario. Esto es importante por razones de seguridad porque la gente no podrá adivinar el nombre de usuario que tenga privilegios de Administrador para nuestra instalación de WordPress.

15. Oculta tus Sitemaps XML a los motores de búsqueda

Los Sitemaps XML ayudarán a los motores de búsqueda a indexar mejor tu sitio, pero no quieres que los motores de búsqueda realmente muestren tu mapa del sitio en las páginas de resultados.

Agrega la siguiente línea a tu archivo .htaccess para evitar la indexación de sitemaps XML:

<IfModule mod_rewrite.c>
 <Files sitemap.xml>
  Header set X-Robots-Tag "noindex"
 </Files>
</IfModule>

16. No utilizar la búsqueda de WordPress

Asegúrate de que la búsqueda en el sitio es proporcionada por Google Custom Search y no utilices la función de búsqueda integrada de WordPress.

La búsqueda de WordPress devuelve resultados menos relevantes. Otra ventaja es que vas a reducir la carga en el servidor/base de datos de WordPress  ya que las consultas de búsqueda se manejan a través de Google.

Alternativamente, si vas a continuar incorporado la búsqueda con WordPress, usa el plugin Nice Search. Se crean mejores enlaces permanentes para tus páginas de búsqueda de WordPress (/search/tutoriales en lugar de /?s=tutoriales).

17. Protege con contraseña tu directorio wp-admin

Puedes agregar otro nivel de seguridad a la instalación de WordPress con una contraseña que protege el directorio wp-admin. Pero tienes que recordar dos conjuntos de credenciales para iniciar sesión en WordPress - tu contraseña WordPress y la contraseña que protege el directorio wp-admin.

18. Logs de errores 404 en Google Analytics

Los errores 404 son una oportunidad perdida. Puedes usar los eventos de Google Analytics para registrar tus errores 404, incluyendo detalles sobre el sitio de referencia que apunta a la página 404 de tu sitio.

Añade este bloque dentro del código de seguimiento de Google Analytics después de la función _gaq.push :

<? if (is_404()) { ?>
 _gaq.push(['_trackEvent', '404', document.location.pathname + document.location.search, document.referrer, 0, true]);
<? }

19. Elimina todos los temas y los plugins de WordPress no utilizados

Los plugins y temas no utilizados afectan el rendimiento de tu sitio web de WordPress, el objetivo debe ser tener en nuestro servidor tan poco código ejecutable como sea posible. Así que desactiva y elimina las cosas que ya no necesitas.

20. Detén las adivinanzas de URLs de WordPress

WordPress tiene un extraño hábito de adivinar direcciones URL y no comete errores en la mayoría de los casos. Me explico. Si un usuario hace una solicitud a pirman.es/hola, pero esa página no existe, WordPress puede redirigir a ese usuario a pirman.es/hola-mundo sólo porque las URLs tienen algunas palabras comunes.

Si quieres dejar que WordPress deje de adivinar las URLs y en su lugar emita un error 404 Not Found para las páginas que no existen, coloca este código en el archivo functions.php de tu tema:

add_filter('redirect_canonical', 'stop_guessing');
function stop_guessing($url) {
 if (is_404()) {
   return false;
 }
 return $url;
}

21. Establece encabezados de caducidad para el contenido estático

Los archivos estáticos alojados en tu sitio web WordPress - como imágenes, CSS, JavaScript, txt, etc - no van a cambiar a menudo y por lo tanto puedes configurar Expire Headers contra ellos para que los archivos se almacenan en la caché del navegador del usuario. A partir de entonces, para las siguientes visitas, tu sitio cargará relativamente más rápido ya que los archivos CSS y JS utilizarían la caché local. Al archivo .htaccess habría que añadirle lo siguiente:

ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"

Consulta el archivo .htaccess de la plantilla HTML5 boilerplate para obtener más información sobre la configuración de la caducidad de encabezados. Si estás usando un plugin de caché como W3 Total Cache, el control de caché está gestionado por el propio plugin.

23. Mejora la Seguridad de tu blog de WordPress

Lo esencial es que se deben añadir las claves secretas a tu archivo wp_config.php, instalar un plugin de seguimiento de archivos y también Limit Login para evitar ataques de fuerza bruta (hablaré más detalladamente de este tema de seguridad en Worpress en otro artículo).

24. Desactivar la edición de archivos dentro de WordPress

Cuando estás conectado a tu panel de WordPress como administrador, puedes modificar fácilmente cualquiera de los archivos PHP asociados con los plugins y temas de WordPress. Si deseas eliminar la funcionalidad de edición de archivos (la falta de un punto y coma puede acabar con tu sitio de WordPress), añade esta línea a tu archivo wp-config.php:

define( 'DISALLOW_FILE_EDIT', true );

25. Eliminar parámetros de consulta adicionales de URLs

Si la dirección de tu sitio de WordPress es abc.com, la gente todavía puede llegar a tu sitio si se añaden unos parámetros de consulta a la URL. Por ejemplo, abc.com/?utm=ga o abc.com/?ref=feedly . Técnicamente hablando, son URLs completamente diferentes, pero funcionan muy bien.

Esto es malo porque diluye la participación de los enlace (SEO) y, en una situación ideal, deseas que todas las URL apunten a la versión canónica. Añadiendo este pequeño fragmento de código en el archivo .htaccess se eliminarán los parámetros de consulta innecesarios de todas las peticiones entrantes.

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{QUERY_STRING} !=""
 RewriteCond %{QUERY_STRING} !^p=.*
 RewriteCond %{QUERY_STRING} !^s=.*
 RewriteCond %{REQUEST_URI} !^/wp-admin.*
 RewriteRule ^(.*)$ /$1? [R=301,L]
</IfModule>

En otro momento también hablaré de algunos plugins esenciales de Wordpress y comandos de Linux para mejorar la gestión de la instalación de WordPress desde el shell (consola).

Ver también:

Fragmentos útiles para proteger tu blog de WordPress contra scrapers
10+ trucos en el archivo wp-config.php para mejorar tu sitio de WordPress

Jesus_Caceres