He instalado WordPress… ¿y ahora qué?
La instalación de WordPress en tu hosting te llevará los famosos 5 minutos en unos sencillos pasos, pero es recomendable ajustar algunas de las opciones predeterminadas para optimizar el rendimiento y también para mejorar la seguridad de tu sitio web de WordPress. Estamos hablando de instalaciones alojadas en Apache bajo Linux a partir del paquete de WordPress.org, NO de sitios web y blogs de WordPress.com.
1. Cambia la estructura de enlaces permanentes
No uses la estructura predeterminada de WordPress ya que es mala para SEO. Ve a Ajustes > Enlaces Permanentes y cámbialo a «Nombre de entrada» o a «Estructura personalizada» con algo así:
Opción 1: /%post_id%/%postname%
Opción 2: /%category%/%postname%/%post_id%/
2. Mueve la carpeta de carga de medios y usa Imagify
WordPress almacena todas tus imágenes y archivos subidos en la carpeta wp-content/uploads. Sin embargo, puedes mover esta carpeta fuera de la carpeta principal de WordPress, preferentemente en un subdominio. Así, tus copias de seguridad de WordPress serán más manejables (los archivos subidos y los temas pueden ser copiados por separado) y, lo más importante, servir imágenes de un dominio diferente permitirá descargas paralelas en el navegador mejorando el tiempo de carga de la página.
Para ello abre tu archivo wp-config.php y agrega las siguientes líneas para cambiar la ubicación de la carpeta wp-content. También puedes deseleccionar la opción «Organizar mis subidas en carpetas basadas en mes y año» dentro de Ajustes>Medios
define( 'WP_CONTENT_URL', 'http://files.domain.com/media' );
define( 'WP_CONTENT_DIR', $_SERVER['HOME'] . '/files.domain.com/media' )
Imagify es una gran utilidad para comprimir tus imágenes al máximo, ahorrando espacio y mejorando la velocidad de carga. Lo puedes hacer desde la propia página pero recomiendo hacerlo a través del plugin en WordPress. Si ya tienes subidas imágenes haz una compresión masiva. Lo notarás en seguida. Y mantiene siempre una copia de respaldo de las originales. Existe un plan gratuito de 25 Mb al mes y varios por volumen. También uno puntual de 500 Mb por 5$. Merece mucho la pena.
3. Mejora la seguridad de WordPress
El tema de la seguridad es vital en WordPress y requiere un artículo más detallado. Por ahora sólo comentar la importancia de las claves secretas en el archivo wp_config.php; la recomendación de instalar un plugin de supervisión de archivos y vigilancia (Sucuri o WordFence); la utilidad de cambiar el prefijo de la tabla de WordPress y también la necesidad de limitar los intentos de inicio de sesión para evitar ataques de fuerza bruta.
4. Evita que puedan navegar por tus carpetas
Para evitar que alguien pueda explorar tus archivos y carpetas de WordPress en el navegador, añade la siguiente línea al archivo .htaccess que existe en tu directorio de instalación de WordPress:
Options All -Indexes
También asegúrate de que hay un index.php en blanco en la carpeta wp-content/themes y otro en wp-content/plugins, dentro del directorio de WordPress.
5. Habilita la autenticación de dos pasos
Esto es muy recomendable. Si alguien se apodera de sus credenciales de WordPress, seguirán necesitando su teléfono móvil para entrar en su sitio de WordPress.
A diferencia de Dropbox o Google, la autenticación en dos pasos no forma parte de WordPress, pero existen bastantes plugins que te permitirán hacerlo. Yo llevo tiempo usando Duo Two-Factor Authentication.
6. Deshabilita HTML en los comentarios
El cuadro de comentarios en WordPress permite a los comentaristas utilizar etiquetas HTML y pueden incluso añadir hipervínculos en su comentario. Los comentarios tienen rel=nofollow, pero si quieres inhabilitar completamente HTML en los comentarios de WordPress, agrega este código a tu archivo functions.php:
add_filter( 'pre_comment_content', 'esc_html' );
7. Desactiva las revisiones de publicación
WordPress incluye una útil función de revisiones de documentos para ayudarte a realizar un seguimiento de los cambios en las ediciones de publicaciones y también para poder volver a cualquier versión anterior de ellas. Sin embargo, éstas aumentan el tamaño de la tabla wp_posts de WordPress.
Para deshabilitar las revisiones en WordPress, abre el archivo wp-config.php en tu directorio de WordPress y agrega la siguiente línea:
Define ('WP_POST_REVISIONS', false);
De forma alternativa, si quieres conservar la funcionalidad de revisiones de publicaciones, puedes limitar el número de revisiones que WordPress almacena en la base de datos MySQL. Agrega esta línea al archivo wp-config.php para almacenar sólo las 3 ediciones recientes.
Define ('WP_POST_REVISIONS', 3);
8. Cambia el intervalo de autoguardado
Cuando editas una entrada WordPress guarda automáticamente borradores mientras escribes para poder recuperar el 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 2 minutos (120 seg) añadiendo una línea al archivo wp-config.php.
Define ('AUTOSAVE_INTERVAL', 120);
9. Deshabilita las pistas de inicio de sesión de WordPress
Cuando se escribe un nombre de usuario inexistente o una contraseña incorrecta al iniciar sesión WordPress proporciona un mensaje de error muy detallado diciendo exactamente si su nombre de usuario es incorrecto o la contraseña no coincide. Esto ofrece pistas a las personas que están tratando de entrar en su página de WordPress. Afortunadamente podemos desactivar las advertencias de inicio de sesión. Añade esté código a tu archivo functions.php:
function no_wordpress_errors(){
return 'GET OFF RIGHT NOW !!';
}
add_filter( 'login_errors', 'no_wordpress_errors' );
10. Oculta los RSS Feeds no esenciales
La instalación de WordPress genera múltiples feeds RSS: el feed del blog, los feeds de los artículos, el feed de los comentarios, los feeds de la categoría, los feeds de los archivos, etc. Si sólo quieres publicar tu feed RSS principal y eliminar los otros feeds de la cabecera de tu sitio, agrega esté código a tu archivo functions.php:
add_filter( 'feed_links_show_comments_feed', '__return_false' );
11. Mantén un solo RSS Feed y redirige los otros
En el paso anterior, simplemente eliminamos los feeds RSS dentro del encabezado del sitio, pero los feeds RSS siguen existiendo. Si deseas tener solo un feed RSS a través de FeedBurner y deshabilitar todos los otros feeds, agrega este código a tu archivo .htaccess. Recuerda reemplazar la URL del feed por la suya.
<IfModule mod_rewrite.c>
RewriteEngine en
RewriteCond% {HTTP_USER_AGENT}! ^. * (FeedBurner | FeedValidator) [NC]
RewriteRule ^ feed / ?.*$ http://feeds.misitio.com/ejemplo [L, NC, R = 301]
</IfModule>
12. Añade favicon e icono para dispositivos Apple
Aunque tu tema no te dé la opción de añadirlos, deberías incluir referencias al favicon y al específico de Apple, ya que los navegadores web y los lectores de feeds pueden solicitarlos. Siempre es mejor servir un archivo que devolver un error 404.
Para ello debes crear un archivo «favicon.ico» de 16 × 16 px y otro «apple-touch.png» de 144 × 144 px y subirlos al directorio de inicio de tu web. A continuación, añade esta línea a su .htaccess para redirigir todas las solicitudes de iconos de Apple Touch a ese archivo en particular.
RedirectMatch 301 /apple-touch-icon(.*)?.png http://example.com/apple-touch.png
13. Controla la indexación de tu sitio
Google y otros motores de búsqueda deben rastrear e indexar las páginas de tu sitio web, pero no los diversos archivos .php o de programación de la instalación de WordPress. Para ello debes crear un archivo robots.txt en tu directorio principal de WordPress y, como sugerencia, agregar estas líneas. Con ello bloquearás el acceso a a la estructura interna de WordPress y a contenidos no recomendados para indexar.
User-agent: *
Disallow: /wp-login
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /feed/
Disallow: */feed/
Disallow: /*/feed/
Disallow: /*/trackback/
Disallow: /*/attachment/
Disallow: /author/
Disallow: /*/page/
Disallow: /*/feed/
Disallow: /tag/*/page/
Disallow: /tag/*/feed/
Disallow: /page/
Disallow: /comments/
Disallow: /xmlrpc.php
Disallow: /*?s=
Disallow: /*/*/*/feed.xml
Disallow: /?attachment_id*
14. Elimina metaetiquetas innecesarias del encabezado de WordPress
Si miras el código fuente HTML de tu sitio WordPress, encontrarás un par de metaetiquetas en el encabezado que no son necesarias. Por ejemplo, la versión de WordPress que se ejecuta en tu servidor puede averiguarse fácilmente mirando el encabezado:
<meta name=»generator» content=»WordPress 4.7.3″ />
Esta información es una buena pista para los hackers que buscan dirigirse a las instalaciones de WordPress que utilizan versiones antiguas desactualizadas y por tanto menos seguras. Para eliminar completamente el número de versión y otros meta-datos no esenciales de tu encabezado de WordPress agrega este fragmento al archivo functions.php que se encuentra en la carpeta de tu tema activo (o «child») de WordPress:
remove_action( 'wp_head', 'wp_generator' ) ;
remove_action( 'wp_head', 'wlwmanifest_link' ) ;
remove_action( 'wp_head', 'rsd_link' ) ;
15. Elimina al usuario «admin» como administrador
Si tu nombre de usuario de WordPress es «admin«, crea un nuevo usuario y concede privilegios de administrador. Cierre la sesión de WordPress e inicia sesión de nuevo como el nuevo usuario. Elimina el antiguo «admin» y reasigna sus entradas.
16. Añade tu sitio a Google Webmasters
Registra mediante alguno de los métodos que Google te ofrece y configura tu sitio con las herramientas que Google te proporciona. Te permite comprobar y testear funcionalidades importantes para tu web.
17. Sube tu Sitemap a Google Webmasters
Si no usas un plugin que lo haga, como por ejemplo Yoast Seo (que deberías tener porque gestiona y es de gran ayuda para el SEO de tu web) debes crear y subir tu sitemap.xml. También puedes probar tu archivo robots.txt.
18. Oculta el Sitemap a los motores de búsqueda
El sitemap.xml ayudará a los motores de búsqueda a rastrear mejor tu sitio, pero no debería permitir que los motores de búsqueda muestren su mapa de sitio en las páginas de resultados de búsqueda. Añade este código a tu .htaccess para evitar la indexación de sitemaps XML.
<IfModule mod_rewrite.c>
<Files sitemap.xml>
Header set X-Robots-Tag «noindex»
</Files>
</IfModule>
19. Registra tu sitio en Google Analytics
Registra tu sitio mediante alguno de los métodos que Google Analytics te ofrece. Pronto empecerá a recibir datos para su estudio y seguimiento. También es buena idea asociar esta propiedad de Analytics con la correspondiente que has registrado anteriormente en Webmasters a través de las herramientas de Webmasters.
20. Instala el plugin Google Analyticator
Google Analyticator es una opción muy recomendable para tener un acceso rápido a las visitas de tu sitio desde el escritorio de WordPress y para la comunicación y configuración con Google. Debes enlazarlo con la propiedad correspondiente en Google Analytics.
21. Registra errores 404 en Google Analytics
Los errores 404 son una buena oportunidad para pulir tu sitio. Puedes utilizar eventos en Google Analytics para registrar tus errores 404, incluyendo detalles sobre el sitio de referencia que apunta a esa página 404 de tu sitio. Agrega este fragmento de código a tu archivo 404.php:
<? if (is_404()) { ?>
_gaq.push(['_trackEvent', '404',
document.location.pathname + document.location.search,
document.referrer, 0, true]);
<? } ?>
22. No utilices la búsqueda de WordPress
Una buena idea es que las búsquedas en tu sitio se realicen a través de la Búsqueda personalizada de Google y que no utilices la función de búsqueda propia de WordPress. La búsqueda de WordPress devuelve resultados menos relevantes. Otra ventaja añadida es que se reducirán las peticiones a tu servidor/base de datos porque las consultas de búsqueda se realizarán a través de Google.
23. Elimina los temas y plugins no utilizados
Los plugins y temas no utilizados no afectan el rendimiento de su sitio WordPress, pero el objetivo debe ser tener menor código ejecutable posible en nuestro servidor. Por tanto es bueno desactivar y eliminar lo que no necesitas.
24. Impide que WordPress adivine URLs
WordPress tiene la costumbre de adivinar URLs y no suele cometer errores. Te pongo un ejemplo. Si un usuario solicita la URL gurafika.com/hola y esa página no existe, WordPress puede redirigir a ese usuario a gurafika.com/hola-mundo sólo porque las URL tienen algunas palabras comunes.
Si quieres que WordPress deje de adivinar las URLs y muestre un error 404 para las páginas que faltan, añade este fragmento en el archivo functions.php:
add_filter('redirect_canonical', 'stop_guessing');
function stop_guessing($url) {
if (is_404()) {
return false;
}
return $url;
}
25. Establece encabezados de caducidad para el contenido estático
Los archivos estáticos alojados en su sitio WordPress, como imágenes, CSS y JavaScript, no cambiarán a menudo y, por lo tanto, puede configurar cabeceras de expiración para que los archivos se almacenen en caché en el navegador del usuario. Por lo tanto, en las visitas subsiguientes, tu sitio se cargará relativamente más rápido, ya que los archivos JS y CSS se extraerían de la caché local. Para ello debes añadir las líneas de código a tu archivo .htaccess.
Puedes consultar HTML5 Boilerplate para obtener detalles sobre la configuración de encabezados de caducidad y compresión para el rendimiento. Si está utilizando un plugin de caché como W3 Total Cache, el control de caché es administrado por el propio plugin.
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»
26. Elimina parámetros adicionales de consulta de las URL
Si la dirección web de tu sitio WordPress es midominio.com, la gente también puede llegar a tu sitio si agrega algunos parámetros de consulta a la URL. Por ejemplo, midominio/?utm=ga o midominio/?ref=feedly son, técnicamente hablando, URLs completamente diferentes, pero funcionarán.
Esto es malo porque diluye el vínculo de equidad (SEO) y, en una situación ideal, todas las direcciones URL deben señalar a la versión canónica. Añade este pequeño fragmento a tu archivo .htaccess y eliminarás los parámetros de consulta innecesarios de todas las solicitudes 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>
27. Deshabilita la edición de archivos dentro de WordPress
El administrador de WordPress puede editar fácilmente cualquier archivo .php asociado a plugins y temas de WordPress. Para eliminar esa funcionalidad de edición de archivos (un punto y coma perdido puede borrar su sitio de WordPress), agrega esta línea a su archivo wp-config.php:
define( 'DISALLOW_FILE_EDIT', true );
28. Inserta tu marca en tu Feed RSS
Puedes agregar fácilmente tu logotipo o marca a todos los artículos en tu Feed RSS. Para ello añade este código al archivo functions.php:
function add_rss_logo($content) {
if(is_feed()) {
$content .= «<hr><a href='blog_url'><img src='logo_url'/></a>»;
}
return $content;
}
add_filter('the_content', 'add_rss_logo');
add_filter('the_excerpt_rss', 'add_rss_logo');
29. Permanece conectado por un período más largo
Si marcas la opción «Recordarme«, WordPress te mantendrá conectado durante 2 semanas. Si sólo accedes a WordPress desde un ordenador personal, puedes extender fácilmente la fecha de caducidad de la cookie de inicio de sesión de autorización añadiendo este código a tu archivo functions.php:
add_filter( 'auth_cookie_expiration', 'stay_logged_in_for_1_year' );
function stay_logged_in_for_1_year( $expire ) {
return 31556926; // 1 year in seconds
}
30. Instala los plugins esenciales
Siempre se recomienda mantener al mínimo en número de plugins instalados. Aquí te dejo una lista de algunos de mis preferidos y que no he mencionado anteriormente:
- 404 Redirected: gestión de redireccionamientos.
- Duplicator: clonación y traslado instalaciones y bases de datos de WordPress.
- Duplicate Post: clonación de entradas y páginas.
- Gravity Forms: creación de formularios.
- Post Types Order: reordenación manual de entradas y páginas.
- WP-DBManager: gestión y mantenimiento de bases de datos.
- WP Fastest Cache: alternativa para cacheo y rendimiento de la web.
- WP Google Maps: inserción de mapas de Google.
- WP-Mail-SMTP: configuración de la función de correo.
- WPML: gestión y mantenimiento de web en varios idiomas.
- WPS Hide Login: cambio de la URL de acceso a WordPress para mayor seguridad.
Excelente información
Muchas gracias!
Highly descriptive article, I liked that bit. Will there
be a part 2?
Perhaps… I will do it! Thanks!