La principal característica de un plugin es que amplía las capacidades del cuerpo central de código de un sistema. En este caso ampliarán las características de WordPress. Sin embargo, ampliar una funcionalidad no es un proceso simple, ya que requiere una serie de buenas prácticas y de conocimientos sobre el sistema que se quiere ampliar.
Cómo funcionan los plugins
La base para el desarrollo de plugins en WordPress está enfocada en dos funciones básicas o también conocidas como hooks. Conocer estos dos hooks, entender su funcionamiento y cuál es la diferencia entre ellos será primordial durante todo tu recorrido como desarrollador de WordPress: add_action: completa una acción en uno o varios puntos de la ejecución de WordPress. Para indicar la acción y el punto en donde se ejecuta debemos utilizar los parámetros dentro de la función, ej:
add_action( 'wp_footer', 'mi_funcion' )
En donde wp_footer es el punto de ejecución y mi_funcion es la acción que se ejecutará. Un ejemplo de uso en nuestro caso, sería mediante mi_funcion agregar la librería JavaScript de Twitter en el footer de WordPress. En la documentación del API, puedes encontrar la lista completa de todas las acciones que se ejecutan en el core de WordPress. add_filer: filtra los datos de una acción especificando un hook existente. Al igual que la función add_action, add_filter también hace uso de los parámetros para especificar el filtro que queremos hacer y en dónde lo vamos a hacer, ej:
add_filter( 'the_title', 'mi_titulo' )
En donde the_title sería la acción a la cual vamos a aplicar el filtro y mi_titulo sería la función contenedora del filtro a aplicar. Por ejemplo, podríamos agregar unas comillas a todos los títulos de nuestro sitio. El proceso de crear filtros y aplicarlos a una acción en específico es conocido como hooking, en la documentación del APi de filtros puedes ver la lista de acciones que se pueden _hookear_en WordPress.
Cómo crear un plugin de WordPress:
Es por ello que analizaremos los principales puntos a tener en cuenta para convertir tu idea en un proyecto de plugin viable. Dividamos nuestro proceso en etapas.
Etapa de aprendizaje
En la etapa de análisis debemos aprender todo lo que podamos sobre el funcionamiento técnico de WordPress, es decir que debemos interiorizarnos en el sistema, en el lenguaje y en los paradigmas que aplica.
Para ello hay que comprender quiénes pueden ser nuestros aliados a la hora de desarrollar para WordPress:
1. Codex
El Codex es la biblia de WordPress. Es la documentación donde están descritas la mayoría de las funcionalidades, sus usos más comunes y, en algunos casos, ejemplos concretos. Esta documentación es el pan de cada día para trabajar con WordPress.
2. Handbooks
Por cada tema o funcionalidad compleja, la comunidad de WordPress publica un manual (o handbook) que funciona como una guía básica de cómo recomiendan llevarla a cabo. El caso de los plugins no es la excepción y podrás encontrar toda la información en el handbook correspondiente.
3. Hooks
WordPress utiliza un sistema de actions y filters a lo largo de todo el código fuente que permite “engancharse” a diferentes funcionalidades o momentos de la ejecución del programa y de esta forma poder modificar ciertos contenidos o incrementar dichas funcionalidades. En estos enlaces se puede encontrar el listado de filters y actions.
4. Variables globales
Dentro del contexto de ejecución de WordPress, el core nos proveé de numerosas variables que sirven para obtener información concreta y determinada. Estas variables están disponibles para ser utilizadas en cualquier plugin y es importante conocerlas.
Aquí podrás encontrar la definición de las variables globales más utilizadas.
La pregunta que te debes estar haciendo es: ¿Para qué me sirve todo esto? La respuesta la vamos a ver en la siguiente etapa.
Etapa de análisis y planificación
En esta etapa, como su nombre lo indica, nos vamos a dedicar a pensar en nuestro plugin en concreto.
La respuesta a la pregunta sobre la etapa de aprendizaje es la primera que vamos de develar, ya que está íntimamente relacionada con una de las primeras preguntas que tenemos que responder:
– ¿WordPress no implementa aún lo que necesito?
La primera regla de toda la programación es no volver a crear la rueda. Si las funcionalidades nativas de WordPress resuelven tu problema, no es necesario crear un plugin.
En este sentido puede darse un escenario mixto, en el cual WordPress implementa la funcionalidad, pero no termina de resultar como tú necesitas. En este caso podemos necesitar un plugin muy simple y para ello nos haremos una nueva pregunta:
– ¿Puedo modificar la funcionalidad por medio de algún hook?
Muchas veces la solución es implementar un plugin o una nueva función de theme con un simple hook y todo se resuelve. En estos casos, nuestro plugin no necesitará más que su archivo principal y la aplicación de los filters y actions correctos.
Si tras responder estas dos preguntas seguimos teniendo una respuesta negativa, llegó la hora de plantear cuál será la funcionalidad que desarrollaremos. Para ello tendremos que aplicar una serie de buenas prácticas:
1. Utilizar en todos los lugares que sea posible las funcionalidades propias de WordPress
Esto garantiza no estar desarrollando en diversas oportunidades la misma funcionalidad y muchas veces nos permite ahorrar tiempo.
2. Encapsular la funcionalidad
Esto se debe a que un plugin debería permitirnos “enchufarlo” en cualquier plantilla y por ello no debe depender de funcionalidades que no estén en el código fuente o en el plugin mismo. Al mismo tiempo se debe pensar en una estructura de encapsulamiento que evite la mayor cantidad de conflictos posibles con otros plugins y themes, como por ejemplo a la hora de aplicar nombres de funciones, ejecuciones JS, etc.
3. La menor cantidad de estilos posible para el front
En el caso de plugins que implementan una funcionalidad de front, la idea es que pueda acoplarse a cualquier plantilla y por ello, cuanto más adopte los estilos de cada plantilla, mejor se integrará. Por supuesto que hay estilos que serán necesarios, pero en este caso, menos es más.
Una vez finalizadas estas etapas, puedes comenzar la última etapa que es la implementación y desarrollo.