DEV Community

Manuel Canga
Manuel Canga

Posted on

Escribe código Python modular y extensible con Hooks al estilo WordPress (Te presento wphooks)

Si alguna vez has trabajado con WordPress como desarrollador, ya conoces su superpoder secreto: hooks.

Las acciones (actions) y filtros (filters) son la base de la extensibilidad de WordPress y permiten que los plugins modifiquen casi cualquier cosa sin tocar los archivos principales.

Ahora imagina traer esa misma extensibilidad a Python — de manera limpia, ligera y agnóstica a frameworks.

Eso es exactamente lo que hace wphooks.

PyPI: pip install wphooks

GitHub: https://github.com/manuelcanga/wphooks/


¿Por qué debería interesarte los Hooks en Python?

Python ya tiene signals (Django), observadores, emisores de eventos e incluso librerías como blinker.

Son útiles, pero ninguna de ellas recrea completamente la experiencia de extensibilidad estilo plugin que ofrece WordPress:

  • “Haz algo en este punto específico del flujo de ejecución”
  • “Modifica un valor antes de usarlo”
  • “Añade nueva funcionalidad sin tocar el código principal”
  • “Mantén las nuevas funcionalidades en módulos separados, no dentro de funciones superlargas que nadie quiere tocar.“

Aquí es donde wphooks destaca.

Trae los mismos conceptos que impulsan al 40% de la web directamente a Python:

  • Actions → lanza eventos
  • Filters → transformar datos mediante una cadena de funciones
  • API mínimaadd_action(), do_action(), add_filter(), apply_filters()

Sin frameworks. Sin abstracciones pesadas. Todo plug and play.


Usa los Hooks en código legacy

Imagina esta situación clásica:

Heredas una función de 1000 líneas como process_order().

Es crítica para el negocio. Nadie se atreve a tocarla.

Ahora los de producto te piden: “Envia notificación a Slack cuando se procese un pedido”.

Opción A: editas la función enorme y cruza los dedos para que no se rompa nada.

Opción B: añades un hook y mantienes la nueva lógica en un archivo limpio y separado.

Con wphooks:

Dentro de la función legacy:

def process_order(order):
    # lógica existente...
    do_action('order_processed', order)
Enter fullscreen mode Exit fullscreen mode

En un archivo/módulo separado:

def send_slack_notification(order):
    slack.send(f"Pedido {order.id} recibido!")

add_action('order_processed', send_slack_notification)
Enter fullscreen mode Exit fullscreen mode

Este es el principio abierto/cerrado (Open/Closed Principle) en acción:
Tu función principal sigue cerrada a modificaciones, pero abierta a extensiones.


Actions: “Haz algo cuando ocurra esto”

Las actions permiten adjuntar cualquier número de funciones a un evento y ejecutarlas en el momento adecuado.

from wphooks import add_action, do_action

def send_welcome_email(user_id):
    print(f"Enviando correo de bienvenida a {user_id}")

add_action('user_registered', send_welcome_email)

do_action('user_registered', 123)
Enter fullscreen mode Exit fullscreen mode

Perfecto para:

  • enviar emails
  • logging
  • analíticas
  • integraciones con terceros
  • tareas en segundo plano

Filters: “Modifica un valor antes de usarlo”

Los filters son el valor diferencial de wphooks frente a Django Signals o blinker.
Permiten transformar datos en cadena, al estilo WordPress.

from wphooks import add_filter, apply_filters

def uppercase_title(title):
    return title.upper()

add_filter('format_title', uppercase_title)

title = apply_filters('format_title', "hola mundo")
print(title)   # HOLA MUNDO
Enter fullscreen mode Exit fullscreen mode

Se usan para:

  • formatear datos
  • sanitizar entradas
  • ajustes de precios
  • preprocesar valores
  • extensiones de plugins
  • sobrescribir configuraciones

Se pueden añadir múltiples filtros, y la salida de uno se convierte en la entrada del siguiente.


Instalación

Instalar desde PyPI:

pip install wphooks
Enter fullscreen mode Exit fullscreen mode

O desde el código fuente:

git clone https://github.com/manuelcanga/wphooks.git
cd wphooks
pip install .
Enter fullscreen mode Exit fullscreen mode

Usalo en tu proyecto, importando:

from wphooks import add_action, do_action
from wphooks import add_filter, apply_filters
Enter fullscreen mode Exit fullscreen mode

¿Quién debería usar wphooks?

Úsalo si quieres:

  • API extensibles estilo WordPress en Python
  • filtros que transformen datos
  • arquitectura ligera tipo plugin
  • modernizar código legacy de forma segura
  • hooks sin frameworks

Reflexión final

WordPress demostró hace más de una década que un sistema de hooks simple puede impulsar un ecosistema masivo de plugins, themes y extensiones.
wphooks trae esta arquitectura probada a Python, permitiendo crear aplicaciones limpias, modulares y extensibles con un esfuerzo mínimo.

Si alguna vez deseaste un equivalente directo de WordPress hooks en Python, ahora lo tienes.

Instálalo y pruébalo:

pip install wphooks
Enter fullscreen mode Exit fullscreen mode

Repositorio y documentación:
https://github.com/manuelcanga/wphooks/

Top comments (0)