Hace una semana explicaba que iba a estar en la WordCamp Sevilla 2013 dando con una ponencia que lleva por título “WordPress como framework; mucho más que un CMS“.

Esta entrada es para resumir y explicar mi presentación con el código copy-pasteable (Por si no se puede desde la presentación).

En un evento como la WordCamp de Sevilla, hay muchos perfiles de gente, pero todos tienen algo en común; son “wordpresseros“. Usuarios, desarrolladores, diseñadores o consultores que trabajan con WordPress.

Desde aquí me gustaría lanzar una pregunta al aire: ¿Nos limitamos a crear blogs con WordPress? Mi respuesta es que no, tenemos el framework de desarrollo de aplicaciones web perfecto para hacer mucho más.

¿Qué es un framework?

Pero no voy a empezar a explicar las virtudes de WordPress para estas tareas sin antes definir qué es un framework. Como siempre, delego esta tarea en la Wikipedia, que lo explica genial:

La palabra inglesa “framework” (marco de trabajo) define, en términos generales, un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular que sirve como referencia, para enfrentar y resolver nuevos problemas de índole similar.

¿Qué nos ofrece un framework?

Según la definición de la wikipedia podemos concluir que lo que un framework nos facilita son herramientas ya desarrolladas para agilizar nuestro trabajo productivo. Por ejemplo, en un framework de desarrollo habrá herramientas para gestionar usuarios (inicio de sesión, alta, baja y edición de usuarios…). También hay frameworks para el desarrollo de plantillas (o sistemas de plantillas) y además es 100% personalizable. Podemos decir que el framework es sólo la base del proyecto, un punto de partida.

Por otro lado, el disponer de muchas funciones ya desarrolladas nos permite agilizar nuestro trabajo (desarrollar más rápido), aunque esto depende de cada desarrollador.

Pero sin duda, lo que más me gusta a mí de los frameworks (y de WordPress) son las actualizaciones y la comunidad que hay detrás de ellos. Si desarrollas tu propio sistema gestor de contenidos es posible que tengas agujeros de seguridad y, como sólo lo miras tú, ni te enteres. En un framework hay mucha gente mirando y ya sabéis lo que dicen: “cuatro ojos ven mejor que dos“.

¿Por qué WordPress? ¿Qué nos ofrece como framework?

Para mí WordPress en un proyecto es como una navaja suiza, tiene de todo, aunque le puede faltar la herramienta que más necesitas en un momento dado.

Pero tranquilo, seguro que en los siguientes pasos verás todo el potencial de WordPress para desarrollar un proyecto.

  • Gestión de administración sencilla.
  • Gestión y permisos de usuarios.
  • Motor de creación de temas.
  • Plugins.
  • Caché.
  • Registro de errores.
  • SEO-Friendly.
  • Gestión de multimedia.

Analicemos paso a paso de forma rápida:

Gestión de administración sencilla.
Todos conocemos la maravillosa instalación en cinco minutos de WordPress, o lo fácil que es instalar un plugin, o incluso actualizar el propio WordPress así como sus temas o plugins… No necesito añadir nada más.

Gestión y permisos de usuarios.
WordPress tiene una serie de roles preestablecidos que, para cualquier blog o sitio web sencillo, son más que de sobra: Administrador, Editor, Colaborador y Suscriptor.

Pero en caso de que un proyecto requiera más tipos de usuario con permisos especiales (que no estén englobados en los anteriores), disponemos de unas funciones que nos permiten agregar más roles y permisos:

  • add_role()
  • remove_role()
  • get_role()
  • add_cap()
  • remove_cap()

Si te interesa este asunto, puedes documentarte en el apartado Roles and capabilities del Codex.

Además, si no eres muy bueno programando o no sabes bien cómo hacerlo, puedes instalar un plugin para que lo haga por tí. En la WordCamp yo recomendé Press Permit Core.

Motor de creación de temas
Es bien sabido que hay miles de temas (themes) para WordPress, pero si te animas a crear el tuyo propio para tu aplicación web, WordPress te da una serie de utilidades que te facilitarán la tarea:

  • Campos personalizados (Custom fields, Meta box) y custom post types.
  • Condicionales para saber qué estamos visualizando (is_page(), is_category(), is_front_page()…).
  • Formato de fechas.
  • Loop. Que podremos modificar con las funciones WP_Query() o con query_posts()

Pero sin duda, lo que más me gusta de WordPresses el sistema de plantillas que utiliza. Aquí expliqué brevemente lo que para mí es la diferencia entre tema y plantilla. El tema es el conjunto de plantillas que conforman el diseño de nuestro sitio mientras que la plantilla es para una página específica.

En WordPress encontramos plantillas como la general (por defecto), Autor, Página, Post (single o entrada), Categoría, Comentarios, personalizadas… Algo realmente potente para algunos proyectos (crear un catálogo de productos, por ejemplo).

Plugins
A día de hoy (quizá cuando leas esta entrada serán más), WordPress cuenta con 28.000 plugins. Los hay de todos los tipos y permiten añadir casi cualquier funcionalidad extra a nuestra instalación de WordPress.

Lo bueno de los plugins es que nos permiten sustituirlos en caso de que funcionen mal, nos dan actualizaciones con nuevas funcionalidades (si el desarrollador se preocupa por su creación) y nos ahorran tiempo.

Por otra parte, lo malo de los plugins es que sacrificamos optimización y ralentizamos el tiempo de carga de nuestro sitio, ampliando las consultas a la base de datos o cargando ficheros extra que, de haber programado nosotros la función, nos podríamos evitar.

Cache
WordPress cuenta con un sistema de caché que funciona bastante bien. Para activarlo sólo necesitamos incluir define(‘WP_CACHE’, true); en nuestro wp-config.php y una pequeña función para gestionarla, aunque personalmente recomiendo utilizar WP Super Cache o W3 Total Cache.

Registro de errores
Como si de un paciente se tratara, podemos monitorizar y escuchar qué nos dice nuestro WordPress, qué errores se producen en su funcionamiento y así pulir y mejorarlo.

Para activarlo, añadimos las siguientes líneas en nuestro wp-config.php.

//Activamos el registro de errores.
@ini_set('log_errors', 'On');
@ini_set('display_errors', 'Off');
//Dónde queremos que guarde el registro.
@ini_set('error_log', '/directorio/destino/errores_wordpress.log');

SEO-Friendly
Enlaces permanentes (url amigables), código limpio, arquitectura de la información sólida (disponemos de páginas, categorías, custom post types…) u optimización de imágenes (título, texto alternativo, descripción) son algunas de las cosas que WordPress nos ofrece para empezar una base SEO fuerte y sólida.

Lógicamente, tendremos que cuidar otros factores en los que no voy a entrar ahora (quizá en futuras entradas).

Como plugins que facilitan el SEO recomendé: WordPress SEO by Yoast, All In One SEO Pack y Google XML Sitemaps.

Gestión de multimedia
Con WordPress se nos facilita la tarea de gestionar ficheros y compartir tanto imágenes como documentos de todo tipo (comprimidos .zip o .rar, PDF, documentos de Office…).

También podemos gestionar las imágenes de una forma potente: seleccionar alineación o tamaño, definir tamaños preestablecidos (desde functions.php), etc.

Seguro que hay muchas más características que facilitan el uso de WordPress como framework, ¿Cuáles se te ocurren a tí?

Aquí tienes la presentación, por si quieres verla de nuevo:

Aquí un PDF para descargar con la presentación, para quien quiera guardarlo.

No dudes en dejar tu opinión en los comentarios y compartirlo en las redes sociales.

Gracias a la organización de WordCamp Sevilla por darme la oportunidad de compartir lo que sé con una comunidad que me ha dado tanto, sin ellos no podría haber compartido en la WordCamp de Sevilla.

2 comentarios en “WordPress como framework, mucho más que un CMS – Mi ponencia en #WCSevilla

  1. Los framework son una gran ayuda para simplificar nuestro trabajo a la hora de realizar aplicaciones. Siempre son bueno y que se dejen modificar es siempre útil, ya que lo hacemos para que funciona a nuestra necesidad.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *