Los Plugin de WordPress permiten, de una forma sencilla, la modificación, personalización y mejora de bitácoras WordPress. En vez de modificar el núcleo del programa de WordPress, se puede añadir funcionalidad a éste por medio de los plugin de WordPress. Esta es una definición básica:
Plugin de WordPress: Un plugin de WordPress es un programa, o un conjunto de una o varias funciones, escritas en el lenguaje de script PHP, que añaden un conjunto específico de características o servicios a una web WordPress, que pueden integrarse perfectamente en la web utilizando puntos de acceso y métodos provistos por una Interfaz de Programación de Aplicaciones (API) WordPress.
¿Desea que WordPress tenga una funcionalidad nueva o modificada? Lo primero que hay que hacer es buscar en los repositorios de WordPress para saber si alguien ya ha creado el plugin que se ajuste a sus necesidades. Si no es así, este artículo le guiará a través del proceso de creación de su propio plugin WordPress.
Este artículo asume que usted está familiarizado con la funcionalidad básica de WordPress y con la programación en PHP.
Esta sección del artículo le conducirá a través de los pasos que usted necesita seguir, y las cosas a considerar, en la creación de un plugin para WordPress bien estructurado.
La primera tarea a la hora de crear un plugin de WordPress es pensar en qué va a hacer el plugin, y crear un (ojalá único) nombre para él. Compruebe en Plugin y en otros repositorios referidos en el enlace, que el nombre no exista ya; se puede hacer, también, una búsqueda en Google. Muchos desarrolladores eligen nombres que describen, de alguna manera, lo que hace el plugin; por ejemplo, un plugin que haga algo relacionado con el tiempo, podría llevar la palabra "tiempo" en su nombre. El nombre puede tener varias palabras.
El siguiente paso es crear un archivo PHP con un nombre, derivado del nombre que usted ha elegido para el plugin. Por ejemplo, si su plugin se llamará "funcionalidad maravillosa", usted podría nombrar al archivo PHP funcimara.php. De nuevo, intente elegir un nombre único. La gente que utilice su plugin, lo pondrá en el directorio de WordPress, en su instalación wp-content/plugins/, de forma que no puede haber dos plugin distintos con el mismo nombre de archivo PHP.
Otra opción es separar el plugin en varios archivos. Su plugin WordPress debe tener al menos un archivo PHP; además puede contener archivos JavaScript, archivos CSS, archivos de imagen, archivos de localización, etc. Si hay varios archivos, elija un nombre único para una carpeta de archivos y para el archivo PHP principal, tales como funcimara y funcimara.php en este ejemplo, coloque todos los archivos del plugin en la carpeta y diga a los usuarios que copien toda la carpeta en wp-content/plugins/.
En el resto de este artículo, nos referiremos al archivo PHP principal como "el archivo PHP del Plugin", ya esté en wp-content/plugins/ o en un subdirectorio.
Si usted desea hospedar su plugin en http://wordpress.org/extend/plugins/, necesita, además, crear un archivo readme.txt en formato estándar, e incluirlo con su plugin. Consulte http://wordpress.org/extend/plugins/about/readme.txt para obtener una descripción del formato de este archivo.
Es muy útil crear una página que haga de página de inicio del plugin WordPress. Esta página podría describir como instalar el plugin, qué hace, con qué versiones de WordPress es compatible, qué ha cambiado entre sus diferentes versiones, y cómo utilizar el plugin.
Ahora es tiempo ya de poner algo de información en el archivo PHP principal del plugin.
Las primeras líneas del archivo PHP principal del plugin deben contener la cabecera estándar de información del plugin. Esta cabecera permite a WordPress reconocer que el plugin existe, y ponerlo en la pantalla de gestión para que pueda ser activado, cargado y ejecutar sus funciones. Sin esta cabecera, su plugin no podrá ser activado ni funcionar. Este es el formato de la cabecera:
<?php /* Plugin Name: Nombre del plugin Plugin URI: http://URI_De_La_Página_Que_Describe_el_Plugin_y_Actualizaciones Description: Una breve descripción del plugin. Version: El número de versión del plugin e.j.: 1.0 Author: Nombre del autor del plugin Author URI: http://URI_del_Autor_del_Plugin License: Un nombre de licencia "pegadizo" e.j. GPL2 */ ?>
El mínimo de información que WordPress necesita para reconocer su plugin es el nombre del mismo. El resto de la información (si está presente) se utilizará para crear la tabla de plugin en la pantalla de gestión de plugins. El orden de las líneas no es importante.
La línea de licencia debería ser un identificador común, corto, para señalar bajo que licencia se distribuye el código y está destinado a ser una forma sencilla de ser explícito acerca de la licencia del mismo.
Se acostumbra a generar la cabecera estándar, con información sobre la licencia del plugin. Muchos plugin usan la licencia GPL2, utilizada por WordPress, o una licencia compatible with the GPL2. Para indicar una licencia GPL2 incluya las siguientes líneas en su plugin:
<?php /* Copyright AÑO NOMBRE_AUTOR_PLUGIN (email : EMAIL DEL AUTOR DEL PLUGIN) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ ?>
Ahora es momento de conseguir que el plugin haga algo. Esta sección contiene ideas generales el desarrollo de plugins, y describe como llevar a cabo las diversas tareas que su plugin necesitará hacer.
Muchos plugin de WordPress llevan a cabo sus objetivos conectándose a uno o más "ganchos" (hooks) de plugin WordPress. La forma en que funcionan los ganchos de plugin es que en diferentes instantes mientras WordPress está corriendo, WordPress comprueba si algún plugin ha registrado alguna función para ejecutarse en ese preciso instante, y si es así, ejecuta dicha función. Estas funciones modifican el comportamiento del WordPress por defecto.
Por ejemplo, antes de que WordPress añada el título de un post a la salida del navegador, primero chequea si algún plugin ha registrado una función para el gancho "filtro" llamado "the title". Si es así, el texto de título se pasará por turnos a través de cada función registrada, y el resultado final será lo que se escriba. Así, si su plugin necesita añadir información al título, puede registrar una función de filtro "the title".
Otro ejemplo es el gancho "acción" llamado "wp_footer". Justo antes del final de la página HTML que WordPress está generando, comprueba si algún plugin ha registrado funciones para el gancho de acción "wp_footer" y los ejecuta por turno.
Usted puede aprender más sobre como registrar funciones, tanto para ganchos de filtro como para ganchos de acción, y qué ganchos de plugin están disponibles en WordPress, en API Plugin. Si usted encuentra un punto en el código de WordPress donde desea disponer de una acción o un filtro, pero WordPress no lo tiene, puede sugerir nuevos (las sugerencias, en general, se atienden.); consulte Informando Errores para saber como.
Otra forma en la que un plugin puede añadir funcionalidad al WordPress es creando Etiquetas de Plantilla personalizadas. Alguien que quiera utilizar su plugin puede añadir estas "etiquetas" a su plantilla, en su barra lateral, sección de contenido del post, o donde crea adecuado. Por ejemplo, un plugin que añade etiquetas geográficas a los post, podría definir una función para etiqueta de plantilla llamada geotag_lista_estado() para la barra lateral, que lista todos los códigos de estado, con los links a las páginas de archivo de estados que el plugin activa.
Para definir una etiqueta de plantilla personalizada, solo hay que escribir una función PHP y documentarla para usuarios del plugin en la página de inicio del plugin y/o en el archivo principal PHP del plugin. Es una buena idea, cuando se documenta la función, dar un ejemplo de lo que hay que añadir exactamente a la plantilla para utilizar la función, incluyendo <?php y ?>.
Muchos plugin de WordPress necesitan coger información de la web del propietario o los usuarios de la bitácora y salvarla entre sesiones, para usarla en sus funciones de filtro, acción o de plantilla. Esta información tiene que salvarse en la base de datos de WordPress, con el fin de ser persistente entre sesiones. Hay dos métodos básicos para guardar información en la base de datos desde el plugin:
Consulte Creando Páginas de Opciones para información sobre como crear una página que salvará automáticamente sus opciones por usted.
WordPress dispone de un mecanismo para salvar, actualizar y recuperar de la base de datos de WordPress unas piezas individuales de información llamadas ("options"). Los valores de Opción pueden ser cadenas, matrices u objetos PHP (éstos se "serializarán" - serán convertidos a cadenas - antes de su almacenamiento, y de-serializarán en el momento en que se recuperen). Los nombres de Opción son cadenas, y deben ser únicas, de forma que no entren en conflicto con otros plugins o el mismo WordPress.
Aquí están las principales funciones que su plugin puede utilizar para acceder a las opciones de WordPess.
add_option($name, $value, $deprecated, $autoload);
get_option($option);
update_option($option_name, $newvalue);
Asumiendo que su plugin tiene opciones almacenadas en la base de datos de WordPress (mirar la sección anterior), usted, probablemente, querrá disponer de un panel de administración que permita a los usuarios de su plugin ver y editar los valores de dichas opciones. Los métodos para hacer esto se encuentran detallados en Añadiendo Menús de Administración.
Una vez usted haya realizado la tarea de programar su plugin, la siguiente consideración es (asumiendo que usted planea distribuirlo) la internacionalización. Internacionalización es el proceso de configurar software de forma que pueda ser localizado; Localización es el proceso de traducir el texto mostrado en diferentes lenguajes. WordPress se utiliza a todo lo largo del mundo, de forma que tiene herramientas de localización e internacionalización en su estructura, incluyendo localización para plugins.
Por favor, tenga en cuenta que lo archivos de lenguaje para plugins NO se cargan automáticamente. Añada al código del plugin, para estar seguro de que se cargan los archivos de lenguaje:
load_plugin_textdomain('su_nombre_único','/wp-content/plugins/plugin-name/ubicación-de-los-archivos_mo_po/');
Para buscar una cadena solo tiene que utilizar __('nombre de la Cadena','su nombre único'); para obtener la traducción o _e('nombre de la Cadena','su nombre único'); para mostrar (echo) la traducción.
El siguiente ejemplo busca los archivos mo y po dentro del mismo directorio del plugin:
load_plugin_textdomain('su_nombre_único', false, dirname( plugin_basename( __FILE__ ) ) );
Está altamente recomendado que internacionalice su plugin, de forma que los usuarios de diferentes países puedan localizarlo. Hay una referencia exhaustiva sobre internacionalización, incluyendo una sección que describe como internacionalizar su plugin en I18n para Desarrolladores de WordPress.
Esta última sección contiene sugerencias aleatorias sobre el desarrollo de plugin.