Creando un plugin para WordPress parte 3: Escribiendo el plugin

Ya tenemos la planificación de nuestro plugin hecha, lo siguiente es elegir el nombre. El nombre de nuestro plugin debe ser único, por lo tanto hemos de buscar dentro del repositorio de WordPress que no haya uno que se llame igual. También podemos mirar el listado completo aquí.

directorio plugins

Una vez decidido el nombre (para este ejemplo voy a usar my-plugin), crearemos una carpeta “my-plugin” y dentro de ella crearemos las subcarpetas:

  • admin, para los php con funcionalidad de back-end
  • css, para almacenar allí nuestras hojas de estilos
  • includes, para archivos php auxiliares
  • js, para almacenar nuestros scripts js
  • languages, para la internacionalización de nuestro plugin
  • public, para los php con funcionalidad de front-end

 

También en la raíz de nuestro plugin tendremos al menos un index.php vacío (Silence is golden), my-plugin.php, que es el fichero principal de nuestro plugin, y un uninstall.php que se ejecutará cuando un usuario borre nuestro plugin para realizar acciones de limpieza en BBDD.

En la raíz de nuestro plugin y en todas las subcarpetas que contengan archivos PHP crearemos un index.php con el siguiente contenido para evitar que un usuario ejecute la ruta desde un navegador y pudiera acceder al listado de ficheros:

Además, vamos a añadir a todos los archivos PHP de nuestro plugin la siguiente línea al principio del todo:

Esto es para evitar que un usuario pueda ejecutar un PHP introduciendo la ruta directamente en el navegador. Imaginad que tenéis un PHP que lanza un proceso, guarda info en BBDD o elimina información como el uninstall.php y un usuario malintencionado lo ejecuta simplemente escribiendo la ruta en el navegador, podría causarnos una gran avería.

Volvemos al archivo principal de nuestro plugin my-plugin.php. Debe llamarse como nuestro plugin y estar en la raíz. Éste archivo contendrá las cabeceras de información de nuestro plugin:

 

También es muy recomendable añadir dos funciones muy útiles para plugins, que se ejecutan cuando un usuario activa o desactiva el plugin. No confundir con la acción “cuando un usuario elimina el plugin” que veremos más adelante:

Nos permiten realizar acciones cuando un usuario activa o desactiva el plugin.

A partir de éste punto es importante que te organices el código. Crea una función para cada cosa (usa nombre descriptivos) y coméntala. Así el día de mañana si tienes que modificar algo, o si trabajas en equipo y un compañero tiene que retomar tu trabajo, de un vistazo verá para que sirve cada función y lo que hace. Crea una función para cada proceso o acción que realice el plugin:

  • Definir el textdomain
  • Añadir secciones en el back-end
  • Registrar Custom Post Types
  • Creación de Metaboxes
  • Añadir tus propios CSS y JS (wp_enqueue_scripts())
  • Añadir configuraciones al personalizador
  • etc…

 

De este modo tendremos todo organizado y un código más limpio y mantenible.

 

Seguridad y Rendimiento

Aún quedan dos factores muy importantes que debemos tener en cuenta: seguridad y rendimiento. Respecto al primero, sobre todo si nuestro plugin hace un tratamiento de datos, debemos tener las siguientes precauciones:

  • Comprueba los permisos de usuario, y qué rol puede ejecutar las distintas acciones: current_user_can()
  • Valida cualquier dato introducido por el usuario: HTML5 + JS + PHP + funciones de WP
  • Sanitiza al guardar en BBDD
    • sanitize_title()
    • sanitize_text_field()
    • sanitize_email()
    • sanitize_user()
    • etc…
  • Escapa los datos cuando los muestres en pantalla:
    • esc_html()
    • esc_url()
    • esc_js()
    • esc_attr()
    • etc…
  • Usa nonces en los formularios

 

No nos podemos olvidar del rendimiento de nuestro plugin. Más ahora que está en auge cualquier acción que influya en el rendimiento y velocidad de tu sitio. Por lo tanto si tu plugin usa imágenes y tienes CSS y JS propio, es aconsejable que utilices gulp o grunt para tareas como:

  • Optimización de imágenes
  • Procesado de estilos (sass)
  • Concatenado de CSS y JS
  • Minificar archivos CSS y JS

 

Aunque tengamos varias hojas de estilos o varias librerías JS, podemos concatenarlas y minificarlas para sólo cargar dos archivos, reduciendo el número de peticiones HTTP y el peso de los mismos.

 

Sé aseado

Por último crea en la raíz un archivo uninstall.php para borrar las configuraciones, datos y tablas cuando un usuario lo desinstala, y de este modo no dejar rastros en BBDD. No confundir con las acciones que hemos visto anteriormente de activar/desactivar un plugin. Este fichero será ejecutado de manera automática cuando un usuario borra el plugin desde el panel de administración de WordPress.

En muchas ocasiones andas buscando un plugin para hacer algo concreto y terminas instalando 4 ó 5 para probar cual es el que mejor te encaja…y puedes dejar rastros que “engordan” tu BBDD almacenando datos y/o añadiendo tablas. Para no dejar rastros elimina todo lo que hayas creado con tu plugin:

Si te ha gustado, valora este artículo para mejorar la calidad del blog o compártelo en Redes Sociales…
1 Star2 Stars3 Stars4 Stars5 Stars
Loading...

Web Hosting