Configurando WordPress de manera profesional

En nuestro post anterior, acabamos teniendo un repositorio con docker-compose listo para usar, junto con una instalación de WordPress que utiliza composer y wpackagist, así que ahora vamos a personalizar nuestra instalación de WordPress para sacarle el máximo partido a WordPress de manera profesional.

6854991176_281ffd5890_z
Tapeando hasta tarde

En nuestro caso tenemos un archivo llamado config-prod.php.distque es el que tomaremos como base. Lo primero que vamos a hacer es copiar y pegar el mismo archivo pero con el nombre config-dev.php. Este archivo será nuestra configuración de desarrollo, para producción tendremos un archivo llamado config-prod.php

Configuración de la base de datos

En nuestro docker tenemos una base de datos mariaDB, con el usuario root. Pero para producción no es una opción válida. Lo primero es el usuario de esa base de datos, entramos en PHPmyAdmin (docker.dev:8090) y vamos a “Privilegios” y luego hacemos clic en “Agregar cuenta de usuario”. Ahí lo que hacemos es añadir un usuario y solo darle acceso a la BD de WordPress, en nuestro caso la hemos llamado “wordpress”.

Este mismo usuario es el que añadimos a la configuración en config-dev.php las globales 'DB_USER' y 'DB_PASSWORD'

Como ya sabemos WordPress pone un prefijo a todas las tablas, por defecto es wp_ nosotros vamos a cambiarlo porque así si alguien encuentra un agujero de seqguridad para hacer SQL Injection al menos no sabrá de primeras el nombre de las tablas.

Así que lo que hacemos es editar el fichero config-dev.php y cambiar la linea 52 por otro prefijo distinto: $table_prefix = 'wp_';

Creo que no hay que comentarlo, pero… 123456 no es una contraseña decente. Tener contraseñas fuertes es obligatorio y si son muchas, se olvidan,… utilizar algo como KeePass y no un txt o un Excel 😉

Si ya tienes una BD y lo que quieres es migrar los datos de producción, una opción es utilizar WP Sync DB o con PHPMyAdmin hacer un dump de la base de datos de producción.

Seguridad en WordPress

Las salt de nuestras claves deben ser únicas, una buena solución es utilizar la API de WordPress para definirlas. Entrando en https://api.wordpress.org/secret-key/1.1/salt/ obtendremos una serie de salt unicas que es necesario copiar a nuestro wp-config

define('AUTH_KEY',         's[!34-gn%U9hj=#sVSC$)@IQQ+>O>|!.o Sj^S{>82gU}-Uw[fg~qs,a5f|+ox.h');
define('SECURE_AUTH_KEY',  '4b~_T?p%Cl.N[_0H597la/Q`sMX3PYBzj5:&6B{ZB=%D:Q%,C%pM|c]PAIs`<Zxv');
define('LOGGED_IN_KEY',    'b@aO&N/D/ju4.bgoR$j$us} f;Z<<|?#vv=;xS9n|/n CWUQ;#a6 oWs23izQl; ');
define('NONCE_KEY',        '(YnY(mR]x0yqa=*oG-6G]-Xq5dWo#-]*hCqT-z]NwOM0|l5>;UjJ~|Y2[wEJqgoH');
define('AUTH_SALT',        'n6D$ygWm.F--6*Wi]A*z6G-]Lw[451V`[BZVgU!+:i?H:#pO2VleHU-0YwP5E|dM');
define('SECURE_AUTH_SALT', '@Niqg+eMf*/lWmo][WPaC<@YrjcT+&]IV$+1~&1BK9!Pw#fS!RezjM/0!!0dvB~V');
define('LOGGED_IN_SALT',   '!}|zVjAi|YC2vI(0X-vgs|Ty=XM48D[pd=;.-X3Az,Dk/b6=Eb!E!U19DfRfq[q@');
define('NONCE_SALT',       'OOHM&8|{|USkdOdRH((S1+:i;E}Mjs!I/JrK(KU7E{X{RB;8|_f|n!<Uihvc ?!+');

No tenemos mucho que comentar aquí, lo mejor es seguir esta guía: https://codex.wordpress.org/Hardening_WordPress

Robots.txt

No soy experto en SEO, pero lo mejor para no liarla con el contenido duplicado que mejor que tener un fichero robots.txt mínimo que debe estar dentro de la carpeta public y contener lo siguiente:


Sitemap: http://www.docker.dev:8080/sitemap.xml
User-Agent: *
Disallow: /*/feed/
Disallow: /*/trackback/
Disallow: /*/attachment/
Disallow: /author/
Disallow: /category/*/page/
Disallow: /category/*/feed/
Disallow: /comments/
Disallow: /page/
Disallow: /tag/*/page/
Disallow: /tag/*/feed/
Disallow: /xmlrpc.php
Disallow: /*?s=

Cuidado que está personalizado para nuestro sitio, si deseamos usarlo en otro hay que modificar la ruta del sitemap.xml Tambien hay plugins que puede ayudarnos a generar este fichero.

Modificando la configuración de WordPress

No nos cansaremos de decirlo, WordPress es muy configurable y tenemos miles de opciones para definir en wp-config. Algunas de las más interesantes pueden ser:

  • AUTOSAVE_INTERVAL Es el intervalo de autoguardado, podemos poner los segundos que queramos, pero cada 2 minutos es una buena opción. define('AUTOSAVE_INTERVAL',120);
  • WP_CACHE: Activa la caché propia de WordPress, aunque hay plugins como W3 Total Caché que nos ayudan a configurarla, esta opción puede ser interesante. Cuidado con Activarla en desarrollo, puede darnos algún quebradero de cabeza. define('WP_CACHE', true);
  • WPLANG: Es el idioma del sitio. define('WPLANG', 'es_ES');
  • WP_POST_REVISIONS: Las revisiones de los post son geniales, pero ralentizan cuando hay demasiadas, lo mejor es no acostumbrarlos a ellas y tenerlas desactivadas. define('WP_POST_REVISIONS', false);
  • Otra opción es limitar el numero de versiones utilizando define ('WP_POST_REVISIONS', 3);

Hay muchas más opciones como la de configurar el FTP, de momento no vamos a adentrarnos más.

Debugging

Aunque con XDebug instalado no tendremos problemas en hacer debug, aquí hay algunas opciones que pueden servirnos a la hora de encontrar un problema:

  • WP_DEBUG: Habilita todos los errores y notificaciones de PHP en producción debe estar a desactivado, pero en desarrollo debemos activarlo. define('WP_DEBUG', true)
  • WP_DEBUG_LOG: Trabaja en conjunto con la anterior opción. Deja en fichero wp-content/debug.log información de log. define('WP_DEBUG_LOG', true)
  • SCRIPT_DEBUG: Hace que WordPress no mininifique los ficheros js por defecto
  • SAVEQUERIES Saber que queries se están ejecutando para mejorarlas o para saber si una está fallando es necesario. Una buena opción es activar este parámetro. define('SAVEQUERIES', true);

Algún plugin como Debug Bar también puede sernos muy útil.

Sacandole partido a wpackagist

wpackagist es donde encontraremos todos los plugins y themes necesarios para sacarle partido a WordPress, ya solo nos queda añadirlos al fichero composer.json e instalarlos.

Lista de plugins a tener en cuenta

Ahora otra serie de plugins que merece la pena revisar

  • broken link checker Revisa si hay algún link roto. Quizás lo mejor sea no tenerlo siempre activo y solo hacerlo unas horas
  • tweet old post para twittear post antiguos, bastante util si se sabe utilizar bien.
  • ninja forms para hacer formularios molones
  • woocommerce para nuestra tienda online 😉

Optimizando

La mejor manera de saber que optimizar en WordPress es utilizar servicios externos que nos indiquen que podemos mejorar. Aquí una lista de servicios que nos darán una puntuación de nuestro sitio para poder optimizarlo.

Pero para utilizar todas estas herramientas es necesario que la web esté online. Si no queremos publicar nuestro sitio todavía, podemos utilizar https://www.sitespeed.io/

Coding Standard

Ya estamos a punto de tocar código a desarrollar. Pero antes debemos tener en cuenta que WordPress tiene un coding standard: https://codex.wordpress.org/WordPress_Coding_Standards. Son una serie de reglas, para que todos escribamos código más o menos de la misma manera y debemos utilizarlas cuando estemos desarrollando para WordPress. Normalmente nuestro IDE (PHPStorm) tendrá documentación al respecto. En nuestro caso para PHPStorm la tenemos aquí: https://www.jetbrains.com/help/phpstorm/2016.2/using-php-code-sniffer-tool.html

Conclusiones

Utilizando composer, instalando pocos plugins y siendo buenos desarrollados es posible utilizar WordPress de manera profesional sin quebraderos de cabeza y con buenos resultados. ¿Y tú? conoces algún plugin que deba estar en la lista. alguno que se nos haya olvidado. Alguna manera de mejorar el desarrollo con WordPress.

Anuncios

Un comentario sobre “Configurando WordPress de manera profesional

  1. gran guía recopilatoria de buenas prácticas en wordpress, y ademas vale también para las instalaciones que normales (sin composer) 👏👏👏

    Me gusta

Comenta la entrada

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s