WordPress

toc

1. ¿Qué es WordPress?
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam).

Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([|wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([|wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog.

En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type.

Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical //Hello, Dolly!// en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site.

Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,...

1.1. Pros y contras de WordPress.com y WordPress.org

 * **Pros de WordPress.org**: es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones.


 * **Contras de WordPress.org**: somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta.


 * **Pros de WordPress.com** la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software.


 * **Contras de WordPress.com**: si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.

Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/

1.2. Tipos de usuarios
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en //Opciones Generales//. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios.

En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad):
 * **Suscriptor**: es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ...
 * **Colaborador**: puede crear entradas pero no las puede publicar.
 * **Autor**: puede crear entradas y publicarlas.
 * **Editor**: puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll.
 * **Administrador**: a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.


 * **Tareas** || **Admin** || **Editor** || **Autor** || **Colaborador** ||
 * Entradas : Crear nuevas || Sí || Sí || Sí || Sí ||
 * Entradas : Publicar || Sí || Sí || Sí || No ||
 * Entradas : Modificar – Eliminar || Sí || Sí || No || No ||
 * Páginas : Crear || Sí || Sí || No || No ||
 * Páginas : Modificar – Eliminar || Sí || Sí || No || No ||
 * Categorías de Entradas : Crear || Sí || Sí || No || No ||
 * BlogRoll : Mantener || Sí || Sí || No || No ||
 * Presentacion ( Plantillas y Widgets ) : Modificar || Sí || No || No || No ||
 * Usuarios : Mantener || Sí || No || No || No ||
 * Opciones ( Generales, redacción, lecturas, etc ) : Mantener || Sí || No || No || No ||

[| Roles vs. Capacidades de cada rol]

**2. Instalación**
code chown -R www-data:www-data blog code code mysqladmin -u root -p create nombrebd code > Creamos un usuario con permisos para esa BD: code $ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass'; $ flush privileges; code code chmod o-w wp-config.php chmod o-r wp-config.php chmod g-w wp-config.php chmod g-r wp-config.php code > Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/
 * 1) Bajamos el paquete de [|Wordpress en castellano]
 * 2) Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:
 * 3) **wp-config.php**: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.
 * 4) **wp-admin** y **wp-includes**: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones
 * 5) **wp-content**: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:
 * 6) **uploads**: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde //Opciones// --> //Misceláneas//).
 * 7) **plugins**: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).
 * 8) **themes**: todas las plantillas que tenemos disponibles para "vestir" al blog.
 * 9) **languages**: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).
 * 10) Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):
 * 1) Creamos una BD para wordpress **¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos**
 * 1) Lanzamos desde el navegador la instalación **¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad**
 * 2) Quitamos permisos al fichero wp-config.php
 * 1) Borramos los siguientes ficheros:
 * 2) wp-config-sample.php
 * 3) wp-admin/upgrade.php
 * 4) wp-admin/install.php
 * 5) wp-admin/installer-helper.php

3. Configuración
Tras la instalación es recomendable configurar las siguientes opciones:
 * Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.
 * Generamos una [|SECRET_KEY] y unas [|Security Keys] y las ponemos en wp-config.php
 * Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".
 * En //Opciones// --> //Discusión// dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.

4. Plugins
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el [|repositorio] de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos.
 * [|Akismet]: la mejor lucha contra el spam creada por el propio equipo de WP.
 * [|Contact Form 7]: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.
 * [|xlanguage]: si queremos tener nuestro site en varios idiomas.
 * [|All in One SEO Pack]: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es [|Google XML Sitemaps], que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.
 * Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... [|Sociable] es nuestro plugin.
 * [|Subscribe To Comments]: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.
 * [|Members Only] - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).
 * [|wpDirAuth]: si queremos que los usuarios del site se validen contra un LDAP.
 * [|Yet Another Related Posts]: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.
 * Para "corporativizar" WP, se puede incluir un logo en la [|pantalla de login] y en la zona de [|administración].
 * Para controlar la memoria empleada por WP: [|WP memory usage control].

5. Themes
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [|miles de plantillas] para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado //Apariencia// --> //Widgets//). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ...

La estructura básica de un theme es la siguiente: code if ( function_exists('register_sidebars') ) {   register_sidebar(array( 'name' => 'Barra Lateral Derecha', 'before_widget' => 'código html que queremos que se cargue al inicio de la barra', 'after_widget' => 'código html que queremos que se cargue al final de la barra', 'before_title' => 'código html que queremos que se cargue al inicio del título de la barra', 'after_title' => 'código html que queremos que se cargue al final del título de la barra', ));   register_sidebar(array( 'name' => 'Barra Lateral Izquierda', 'before_widget' => 'código html que queremos que se cargue al inicio de la barra', 'after_widget' => 'código html que queremos que se cargue al final de la barra', 'before_title' => 'código html que queremos que se cargue al inicio del título de la barra', 'after_title' => 'código html que queremos que se cargue al final del título de la barra', )); } code code /* Template Name: Nombre-plantilla code
 * **header.php**: aquí se define la cabecera de la página.
 * **footer.php**: aquí se define el pie de página.
 * **sidebar.php**: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:
 * **index.php**: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (//get_header;//), barras laterales (//get_sidebar;//) y footer (//get_footer;//).
 * **single.php**: este es el fichero que se interpreta cuando se carga un post concreto.
 * **archive.php**: igual que single.php pero para las páginas de categorías y etiquetas.
 * **functions.php**: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...
 * **Templates**: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:
 * **style.css**: fichero con los estilos.
 * **404.php**: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.

6. Otros
> > Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “//Herramientas//" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.
 * [|Emoticonos]
 * Gestión de idiomas
 * **Cómo hacer backup de los datos:**

7. Enlaces de interés

 * [|Directorio de plugins]
 * [|Directorio de themes]
 * [|WordPress Codex], el rincón del programador de WP