Buch lesen: «El gran libro de desarrollo de plugins WordPress»

Schriftart:



El gran libro de desarrollo de plugins WordPress

Primera edición: 2022

©2022 Jhon Jairo Rincón

© 2022 MARCOMBO, S. L.

www.marcombo.com

Diseño de la cubierta: ENEDENÚ DISEÑO GRÁFICO

Correctora: Beatriz García Alonso

Revisor técnico: Pablo Martínez Izurzu

Directora de producción: M.a Rosa Castillo Hidalgo

«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra».

ISBN: 978-84-267-3470-9

D.L.: B 7089-2022

Producción del ePub: booqlab

Índice

PARTE I: FUNCIONES Y MÉTODOS

Introducción

Lo que aprenderá en este libro

Instalando el servidor local wampserver

Instalando la plantilla para nuestro WordPress

Funciones y condicionales básicos de un plugin

¿Qué es un plugin?

Requisitos de cabecera, título y descripción del plugin

Ganchos de activación y desactivación

Métodos de desinstalación

Mejores prácticas para definir nuestras funciones o variables

Comprobación de las capacidades de usuario

Métodos de validación de datos

Métodos de desinfección para la entrada de datos

Nonces I

Nonces II

Menús y submenús de administración de WordPress

Creación de menús en la administración

Creando la función callback del menú

Creación de submenús

¿Qué son los hooks o ganchos en WordPress y para qué sirven?

Ganchos de acción o Action hooks I

Ganchos de acción o Action hooks II

Ganchos de filtro o filter hooks

Ganchos personalizados

Shortcodes

¿Qué es un shortcode?

Creando un shortcode complejo con parámetros

Modificando el shortcode con parámetros

Creando un filtro para nuestro shortcode

Eliminando el shortcode

Uso de las Api settings y Api options

¿Qué son las API settings?

Uso de la API de configuración I

Uso de la API de configuración II

Uso de la API de configuración III

Uso de la API options

Metadatos y Metaboxes

Metadatos I

Metadatos II

Metadatos III

Custom fields

Metaboxes personalizados

Añadiendo editor TinyMCE

Custom Post Types

¿Qué es un Custom Post Type?

Creando el Custom Post Type

Creando el contenido para el CPT

Habilitando la rest api de WordPress para nuestro CPT

Taxonomías en WordPress

¿Qué son las taxonomías?

Creando una taxonomía

Funciones para obtener los términos de una taxonomía I

Funciones para obtener los términos de una taxonomía II

Creando nuestro plugin con arquitectura MVC

Modularizando el código para nuestro plugin I

Modularizando el código para nuestro plugin II

Modularizando el código para nuestro plugin III

Gestión y creación de usuarios desde el administrador

Creando usuarios en WordPress I

Creando usuarios en WordPress II

Obteniendo la información de un usuario

Actualizando y eliminando la información de un usuario

Agregando un campo a los metadatos de usuarios

Guardando los datos de usuarios en el metacampo

Creando un nuevo archivo para organizar el código I

Creando un nuevo archivo para organizar el código II

Creando un nuevo archivo para organizar el código III

Manipulando los roles

Manipulando el rol de un usuario

Manipulando las capacidades de un rol

Comprobando las capacidades de usuario

Manipulando la http api de WordPress y el uso de los transitorios

Funciones para el uso de las peticiones HTTP (Parte I)

Funciones para el uso de las peticiones HTTP (Parte II)

Funciones para el uso de la caché I

Funciones para el uso de la caché II

Peticiones ajax de WordPress y encolamiento de archivos js y css

Creando sistema de encolamiento de archivos js y css I

Creando sistema de encolamiento de archivos js y css II

Método Ajax WordPress I

Método Ajax WordPress II

Método Ajax WordPress III

Método Ajax WordPress IV

Crear widgets

Crear widgets I

Crear widgets II

Tareas automáticas con wp_cron en WordPress

Tareas cron con WP_Cron I

Tareas cron con WP_Cron II

Tareas cron con WP_Cron III

Tareas cron con WP_Cron IV

Internacionalización de idiomas

¿Qué es la internacionalización?

Funciones para la internacionalización de idiomas

Traducción de cadenas de texto en archivos js

Generando los archivos POT

Cargando el TextDomain a nuestro plugin

Interactuando con la base de datos de WordPress

Consultas a la base de datos de WordPress I

Consultas a la base de datos de WordPress II

Consultas predefinidas I (funciones)

Consultas predefinidas II (funciones)

Consultas predefinidas III (funciones)

Consultas generales o específicas

Preparando consultas contra inyección sql

Mostrando errores en la consulta

Gestor multimedia

Gestor multimedia I

Gestor multimedia II Evento select

Gestor multimedia III imprimiendo la imagen

Gestor multimedia IV guardando las imágenes

Gestor multimedia (Método insert)

Gestor multimedia (Método ready)

PARTE II: GESTOR DE POPUPS

Crear un plugin para un modal

Organizando los archivos para el plugin I

Organizando los archivos para el plugin II

Creando el menú de opciones

Encolando los archivos css y js I

Encolando los archivos css y js II

Encolando los archivos css y js III

Creando el menú de opciones I

Creando el menú de opciones II

Creando el menú edit

Creando el modal y editando el js para abrirlo I

Creando el modal y editando el js para abrirlo II

Creando el ajax para guardar los datos del modal I

Creando el ajax para guardar los datos del modal II

Creando el ajax para guardar los datos del modal III

Probando la función para crear nuestros popup

Configurando la página de edición I

Configurando la página de edición II

Configurando la página de edición III

Configurando la página de edición IV

Activando el marco multimedia de WordPress

Creando la función para limpiar la url de la imagen

Obteniendo la ruta final de la imagen de nuestro marco multimedia

Preparando el método Ajax para guardar los datos del popup

Función php para recibir los datos del ajax

Recuperando los datos para nuestra página popup edit I

Recuperando los datos para nuestra página popup edit II

Ajustando el estado del botón switch para la llamada a la acción

Configurando los input radio

Creando la previsualización del popup

Estilos css para el modal

Creando el método Ajax para eliminar un popup

Creando el código php para la eliminación de los popup

Creando la carpeta public para mostrar el popup

Creando el shortcode para el popup

Editando el css y el js para mostrar el popup

PARTE III: GESTIÓN DE USUARIOS

Desarrollando el plugin para gestionar usuarios

Presentación del plugin

Instalando nuestro plugin, configurando la activación y desactivación

Creando el menú

Creando las páginas de visualización

Creando la estructura de la página del menú

Estructura del guardado de tablas con ajax (parte I)

Estructura del guardado de tablas con ajax (parte II) instalando sass

Estructura del guardado de tablas con ajax (parte III)

Configurando el lado del servidor para recibir los datos

Mostrando datos de las tablas

Estructurando la página para la manipulación de usuarios I

Estructurando la página para la manipulación de usuarios II

Agregando el gestor multimedia de WordPress

Limpiando la ruta de la imagen

Creando las funciones para validar los campos

Validando el campo email

Preparando el método ajax

Construyendo el objeto para todos los métodos del CRUD

Manipulando el archivo crud json

Creando el método de lectura json

Mostrando los usuarios insertados con jQuery I

Creando el método para actualizar los usuarios

Mostrando los usuarios insertados con jQuery II

Configurando el ajax para actualizar el usuario

Añadiendo una animación de color al actualizar un usuario

Creando el método de eliminar usuario

Eliminando el usuario de nuestra tabla I

Eliminando el usuario de nuestra tabla II

Creando el shortcode para mostrar el resultado final I

Creando el shortcode para mostrar el resultado final II

Creando el shortcode para mostrar el resultado final III

Parte I

Introducción
Lo que aprenderá en este libro

Este libro está enfocado a todos aquellos que tengan algún conocimiento básico de los lenguajes de la web, como PHP, JavaScript, HTML, CSS, MySQL, y para los que hayan interactuado un poco con WordPress, por ejemplo, al realizar creación de blogs, sitios web, etc.

Si es de los que siempre han querido ir un poco más allá, intentando crear una funcionalidad en WordPress para que le realice algo en específico, pero se le hace difícil, porque no encuentra casi material que le pueda guiar, entonces este libro es para usted.

He desarrollado un itinerario que va desde lo más básico hasta lo más avanzado, para que pueda comprender cómo funciona en realidad WordPress y logre convertir sus ideas en poderosos plugins.

Una vez termine, habrá aprendido a:

• Manipular la base de datos de WordPress.

• Crear una estructura de archivos para sus plugins.

• Realizar consultas sql a la base de datos de WordPress.

• Utilizar múltiples funciones de WordPress para sus plugins.

• Manipular datos y roles de usuarios en WordPress.

• Crear sus propios ganchos de acción personalizados.

• Crear sus propios widgets, etc.

Instalando el servidor local wampserver

Ahora empezaremos preparando la base de nuestro WordPress, que no consiste más que en montar nuestro servidor local, el cual nos permitirá arrancar nuestro WordPress. Para ello, vamos a visualizar un vídeo que he preparado en YouTube, así que vamos a copiar en nuestro navegador el enlace que les dejo debajo de la imagen.


https://vimeo.com/574360614

Instalando la plantilla para nuestro WordPress


Para desarrollar cada uno de los ejercicios propuestos en este libro, he creado una plantilla “Restaurante” y he preparado un vídeo en el que explico cómo descargarla e instalarla. Dejaré el enlace debajo de la imagen.

https://vimeo.com/574360453

Recuerda: accede a www.marcombo.info para obtener gratis las credenciales.

Funciones y condicionales básicos de un plugin
¿Qué es un plugin?

Los plugins o complementos son paquetes de código que amplían la funcionalidad principal de WordPress. Los plugins de WordPress están formados por código PHP y otros activos como imágenes, CSS y JavaScript.

Al crear su propio complemento, está ampliando WordPress, es decir, creando funcionalidades adicionales además de lo que WordPress ya ofrece. Por ejemplo, podría escribir un complemento que muestre enlaces a las diez publicaciones más recientes en su sitio.

O, utilizando los tipos de publicaciones personalizadas de WordPress, puede escribir un complemento que cree un sistema de tiques de soporte con todas las funciones con notificaciones por correo electrónico, estados de tiques personalizados y un portal orientado al cliente. ¡Las posibilidades son infinitas!

La mayoría de los plugins o complementos de WordPress están compuestos por muchos archivos, pero un plugin realmente solo necesita un archivo principal con un DocBlock formateado específicamente en el encabezado.

Un DocBlock es un fragmento de código PHP comentado dentro de nuestro archivo php.

Requisitos de cabecera, título y descripción del plugin

El archivo PHP principal del plugin debe incluir un comentario de encabezado que le dice a WordPress que un archivo es un complemento, y proporciona información sobre este.

Como mínimo, un comentario de encabezado debe contener el nombre del complemento:


Campos de encabezado disponibles

Plugin Name: (obligatorio) el nombre de su complemento, que se mostrará en la lista de complementos en el administrador de WordPress.

Plugin URI: la página de inicio del complemento, que debe ser una url única, preferiblemente en su propio sitio web. Esto debe ser exclusivo de su complemento. No puede usar una url de WordPress.org aquí.

Description: una breve descripción del complemento, como se muestra en la sección Complementos en el Administrador de WordPress. Mantenga esta descripción a menos de 140 caracteres.

Version: el número de versión actual del complemento, como 1.0 o 1.0.3.

Requires at least: la versión más baja de WordPress en la que funciónará el complemento.

Requires PHP: la versión mínima requerida de PHP.

Author: el nombre del autor del complemento. Se pueden enumerar varios autores utilizando comas.

Author URI: el sitio web o el perfil del autor en otro sitio web, como WordPress.org.

License: el nombre corto (slug) de la licencia del complemento (por ejemplo, GPLv2). Puede encontrar más información sobre licencias en las pautas de WordPress.org.

License URI: un enlace al texto completo de la licencia (p. Ej. Https://www.gnu.org/licenses/gpl-2.0.html).

Text Domain: el dominio de texto gettext del complemento. Puede encontrar más información en la sección Dominio de texto de la página Cómo internacionalizar su complemento.

Domain Path: la ruta del dominio le permite a WordPress saber dónde encontrar las traducciones. Puede encontrar más información en la sección Ruta del dominio de la página Cómo internacionalizar su complemento.

Network: si el complemento solo se puede activar en toda la red. Solo se puede establecer en verdadero y se debe omitir cuando no sea necesario.


Ganchos de activación y desactivación

Creamos nuestro plugin de prueba, al que llamaremos pruebas. Vamos a nuestra carpeta wp-content -> plugins -> y aquí dentro de plugins crearemos una carpeta o directorio res_pruebas. Le pondremos un prefijo (res_), de restaurante.


Podemos ver resaltado res_pruebas, dentro crearemos un archivo PHP y lo nombraremos res-pruebas.php.


Vamos a nuestro editor Visual Studio Code y escribimos la cabecera.


Ahora escribiremos las funciones:



Es muy común que en el desactivador se utilice una función para limpiar enlaces permanentes, la función es:

flush_rewrite_rules


Elimine las reglas de reescritura y luego vuelva a crear las reglas de reescritura.

Parámetros

$hard

(bool) (Opcional) Ya sea para actualizar .htaccess (hard flush) o simplemente actualizar rewrite_rules transient (soft flush). El valor predeterminado es verdadero (duro). Valor predeterminado: verdadero.

Esta función es útil cuando se usa con tipos de publicaciones personalizadas, ya que permite el vaciado automático de las reglas de reescritura de WordPress (por lo general, debe hacerse manualmente para los nuevos tipos de publicaciones personalizadas). Sin embargo, esta es una operación costosa, por lo que solo debe usarse cuando sea necesario.

Al desactivar el plugin, se ejecutará esa función y, al activarlo, llamará al archivo activador.php. Si activamos el plugin, nos dará un error, pues no tenemos este archivo.

Vamos a nuestro panel de administrador de WordPress, vamos a plugins y buscamos el plugin pruebas.


Activaremos el plugin y veremos el error.


Ahora, para comprobar que nuestro plugin funciona, vamos a nuestro archivo res-pruebas.php y comentamos la línea donde requerimos el archivo activador.php. Al desinstalar y volver a instalar, veremos que no aparece ningún error.

Ahora crearemos el archivo activador.php y escribiremos lo siguiente:


Con este código estaremos creando una tabla en nuestra base de datos a la que llamaremos mitabla. Esta tabla se creará en el mismo instante en que hagamos clic en Activar nuestro plugin.

Métodos de desinstalación

Los métodos de desinstalación de plugins en WordPress se ejecutan cuando hacemos clic en la opción de borrar un plugin en WordPress.

El primer método requiere que en nuestro archivo principal del plugin escribamos una función.


Con esta función podemos borrar tablas, configuraciones y otras opciones.

El segundo método requiere crear un archivo en la raíz de nuestro plugin, este archivo debe llamarse uninstall.php. Creamos el archivo y escribimos el siguiente código:


Este primer código es de seguridad y dice que, si no está definida esa constante, no siga ejecutando el código que vamos a escribir más abajo.

Ahora vamos a crear una consulta sql para eliminar la tabla que hemos creado anteriormente.


Después de escribir este código, guardamos los cambios.

Ahora vamos a comprobar que esto funciona y, para ello, vamos primero a crear una copia de nuestro plugin res_pruebas comprimiéndolo en un archivo .zip con winrar.


Después de crear el archivo res_pruebas.zip, volvemos a nuestro panel de administración, recargamos la página y desinstalamos el plugin res_pruebas. Ahora hacemos clic en Borrar.


Veremos que nos saldrá una ventana de confirmación y hacemos clic en Aceptar. Ahora, al volver a nuestra base de datos y recargar, podemos ver que la tabla atr_mitabla ha desaparecido.