Resumen: en este post te voy a mostrar una guía para crear un plugin simple de WordPress. Iré paso a paso, y será un post introductorio con un ejemplo.
Recuerda que la creación de plugins para este CMS es hecha con PHP, así que si sabes PHP solo tienes que saber adaptar tu código a los estándares de WordPress y usar sus funciones.
Lo que veremos es:
add_filter
Al final dejaré el código fuente de un plugin que inserta contenido cada determinado número de párrafos (por ejemplo, publicidad 😉 )
Una instalación de WordPress activa y funcionando. Recomiendo que sea local por si hay errores.
Para que un plugin sea tomado en cuenta, necesitamos definir un encabezado.
Un encabezado de plugin para WordPress se ve así:
<?php
/*
Plugin Name: Insertar publicidad entre párrafos
Plugin URI: https://parzibyte.me/blog
Description: Insertar publicidad entre párrafos
Version: 1.0
Author: Luis Cabrera Benito a.k.a Parzibyte
Author URI: https://parzibyte.me/blog
*/
Lo que encontramos es:
Aunque parezca raro: sí, WP leerá el encabezado, bueno, el comentario, y tomará los detalles del mismo.
Para comenzar a desarrollar estos componentes, hay que colocar nuestro código en una carpeta dentro de wp-content/plugins
Puede ser un simple archivo o un directorio; recomiendo crear un directorio.
Para elegir el nombre de tu plugin, coloca tu nombre o el nombre de tu empresa al inicio, seguido de la descripción.
Yo le he puesto un nombre muy creativo al mío: parzibyte-publicidad
Sé que debería llevar un nombre como “parzibyte-insert” pero bueno, el punto es que lleva mi nombre y que es muy poco probable que se repita.
Hasta el momento se ve así:
Ahora crea el archivo dentro de tu carpeta. Yo le he puesto el mismo nombre.
Agrega el siguiente contenido:
<?php
/*
Plugin Name: Insertar publicidad entre párrafos
Plugin URI: https://parzibyte.me/blog
Description: Insertar publicidad entre párrafos
Version: 1.0
Author: Luis Cabrera Benito a.k.a Parzibyte
Author URI: https://parzibyte.me/blog
*/defined("ABSPATH") or die("No es permitido el acceso directo al archivo");
Todavía no estamos haciendo nada, apenas llevamos un avance para que no se pueda acceder al plugin directamente.
Es decir, la línea 10 previene que alguien acceda al plugin desde sitio.com/wp-content/plugins/parzibyte-publicidad/parzibyte-publicidad.php pero es accesible cuando es incluido desde el index.
Ahora ve a tu panel de control y luego a Plugins.
El plugin que acabas de crear debería mostrarse:
Ahora haz click en Activar, no debería pasar nada malo.
Por el momento nuestro plugin no hace nada. Vamos a comenzar agregando nuestra clase y evitando el choque de nombres dentro de PHP.
Porque sí, ya pusimos un nombre único, pero falta elegir funciones o clases únicas.
Para hacer esto, vamos a crear una clase que lleve nuestro nombre y el nombre del plugin. La mía se ve así:
<?php
class ParzibytePublicidad
{
public static function iniciar()
{
}
public function agregar_publicidad($contenido)
{
}
}
Puedo tener múltiples funciones dentro de mi clase, y pueden tener el mismo nombre que las de otros plugins, siempre y cuando no se repita el nombre de mi clase.
WordPress puede incluir nuestro archivo varias veces, y debemos definir nuestra clase solo una vez. Es decir, debemos fijarnos en que nuestra clase no se defina varias veces.
Para saber si una clase está definida, usamos class_exists
y nuestro plugin va quedando así:
<?php
/*
Plugin Name: Insertar publicidad entre párrafos
Plugin URI: https://parzibyte.me/blog
Description: Insertar publicidad entre párrafos
Version: 1.0
Author: Luis Cabrera Benito a.k.a Parzibyte
Author URI: https://parzibyte.me/blog
*/defined("ABSPATH") or die("No es permitido el acceso directo al archivo");
if (!class_exists("ParzibytePublicidad")) {
class ParzibytePublicidad
{
public static function iniciar()
{
}
public function agregar_publicidad($contenido)
{
}
}
}
Tenemos nuestra clase, que tiene funciones simples de PHP. Todavía no estamos llamando a WP pero lo haremos justo ahora.
Ahora ya podemos comenzar a usar las funciones de WordPress.
WordPress ofrece varias funciones para modificar el contenido. En este caso vamos a agregar un filtro a the_content
.
the_content
es el contenido de un post, y sirve para modificar el contenido antes de que sea mostrado.
La sintaxis de add_filter
para este ejemplo es:
add_filter(nombre_del_filtro, funcion_que_modifica_el_contenido)
Así que:
add_filter("the_content", "ParzibytePublicidad::agregar_publicidad");
La función va a recibir el contenido como HTML, es decir, es la variable que recibe.
Debemos invocar a add_filter
en el archivo del plugin. Esa invocación solo debe hacerse una vez.
Veamos el código:
<?php
/*
Plugin Name: Insertar publicidad entre párrafos
Plugin URI: https://parzibyte.me/blog
Description: Insertar publicidad entre párrafos
Version: 1.0
Author: Luis Cabrera Benito a.k.a Parzibyte
Author URI: https://parzibyte.me/blog
*/defined("ABSPATH") or die("No es permitido el acceso directo al archivo");
if (!class_exists("ParzibytePublicidad")) {
class ParzibytePublicidad
{
public static function iniciar()
{
add_filter("the_content", "ParzibytePublicidad::agregar_publicidad");
}
public function agregar_publicidad($contenido)
{
# Aquí modificar el contenido y regresarlo
return $contenido
}
}
# Aquí llamamos a la función que agrega el filtro
ParzibytePublicidad::iniciar();
}
Estamos llamando a iniciar
en la línea 28, dentro de esa función se invoca a add_filter
. Entonces esta función es la que se encarga de indicar que queremos modificar el contenido.
En la línea 20 estamos listos para modificar el contenido. Es decir, esa función se llamará para que se nos permita modificar el contenido de un post.
Dentro de agregar_publicidad
vamos a poner lo siguiente, que es muy sencillo:
<?php
/*
Plugin Name: Insertar publicidad entre párrafos
Plugin URI: https://parzibyte.me/blog
Description: Insertar publicidad entre párrafos
Version: 1.0
Author: Luis Cabrera Benito a.k.a Parzibyte
Author URI: https://parzibyte.me/blog
*/defined("ABSPATH") or die("No es permitido el acceso directo al archivo");
if (!class_exists("ParzibytePublicidad")) {
class ParzibytePublicidad
{
public static function iniciar()
{
add_filter("the_content", "ParzibytePublicidad::agregar_publicidad");
}
public function agregar_publicidad($contenido)
{
if (is_single() && in_the_loop() && is_main_query()) {
return "<p>Al inicio</p>" . $contenido . "<p>Al final</p>";
}
return $contenido;
}
}
ParzibytePublicidad::iniciar();
}
Simplemente estamos agregando un párrafo al inicio y al final del contenido.
Eso lo hacemos solo si es un post, es la primer consulta (porque puede haber varias modificaciones) y si estamos dentro del loop de WP.
Si no se cumplen esas condiciones, entonces regresamos el contenido tal y como está.
Si ahora visitas tu web y has activado el plugin, verás lo siguiente:
Nuestro plugin está funcionando.
A partir de aquí puedes hacer modificaciones al contenido usando expresiones regulares y todo eso del trabajo con cadenas en PHP.
Ahora sí a lo que venimos. A través de una expresión regular vamos a capturar los párrafos e insertar publicidad entre ellos.
Para hacerlo más interesante haremos que la publicidad se inserte cada 2 párrafos (parámetro que puede ser cambiado) por lo tanto el código queda como se ve a continuación:
<?php
/*
Plugin Name: Insertar publicidad entre párrafos
Plugin URI: https://parzibyte.me/blog
Description: Insertar publicidad entre párrafos
Version: 1.0
Author: Luis Cabrera Benito a.k.a Parzibyte
Author URI: https://parzibyte.me/blog
*/defined("ABSPATH") or die("No es permitido el acceso directo al archivo");
if (!class_exists("ParzibytePublicidad")) {
class ParzibytePublicidad
{
public static function iniciar()
{
add_filter("the_content", "ParzibytePublicidad::agregar_publicidad");
}
public function agregar_publicidad($contenido)
{
$expresionRegular = '/<p(>|\s+[^>]*>)(.*?)<\/p>/im';
$publicidad = "<div style='border: 1px solid #8bc34a;font-size:0.7em'>
<strong>¿Quieres un plugin para WordPress?</strong>
<p>Visita mi <a href='//parzibyte.me/blog'>página web</a> para hablar ;)</p>
</div>";
$expresionRegular = '/<p(>|\s+[^>]*>)(.*?)<\/p>/im';
if (is_single() && in_the_loop() && is_main_query()) {
$conteo = 0;
$ponerPublicidadCada = 2;
return preg_replace_callback($expresionRegular, function ($coincidencias) use (&$publicidad, &$conteo, $ponerPublicidadCada) {
$conteo++;
if ($conteo % $ponerPublicidadCada === 0) {
return "<p" . $coincidencias[1] . $coincidencias[2] . "</p>" . $publicidad;
}
return "<p" . $coincidencias[1] . $coincidencias[2] . "</p>";
}, $contenido);
}
return $contenido;
}
}
ParzibytePublicidad::iniciar();
}
No voy a explicar el funcionamiento a detalle, pues ese no es el punto, el punto era ver cómo modificar el contenido de WP a partir de un plugin.
Lo que se hace es tomar los párrafos y remplazar su contenido con una función. Dentro de la función tenemos las coincidencias o grupos de captura en un arreglo .
Tomamos el contenido del párrafo y le adjuntamos la publicidad.
Dentro de la función estamos usando un contador para saber si debemos insertar publicidad. Lo he puesto cada 2 párrafos al final para que saliera la captura completa.
Al final luce así:
Para resumir:
Espero traer más sobre el desarrollo de plugins para WordPress en próximas entradas. Todavía queda mucho por ver.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.