Loe raamatut: «El gran libro de desarrollo de plugins WordPress»
El gran libro de desarrollo de plugins WordPress
Primera edición: 2022
©2022 Jhon Jairo Rincón
© 2022 MARCOMBO, S. L.
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.
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.
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.