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ínima →
add_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)
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)
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)
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
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
O desde el código fuente:
git clone https://github.com/manuelcanga/wphooks.git
cd wphooks
pip install .
Usalo en tu proyecto, importando:
from wphooks import add_action, do_action
from wphooks import add_filter, apply_filters
¿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
Repositorio y documentación:
https://github.com/manuelcanga/wphooks/
Top comments (0)