Cuando empecé con WordPress, buscaba formas de hacer cambios por programación y encontré el concepto de Hooks. Al inicio hablar de Hooks te puede parecer un poco complejo, sin embargo luego de familiarizarte con este término verás que usarlos te resultará más fácil de lo que piensas.
1- ¿Qué son los Hooks de WordPress?
¿Te imaginas que puedas hacer cambios en la funcionalidad de WordPress sin modificar sus archivos fuente?, pues eso es precisamente los que nos permiten los Hooks. La palabra Hook se puede traducir como gancho, la idea es “enganchar nuestro código adicional” en los ganchos que están disponibles a lo largo de todo el código WordPress, y evitar hacer modificaciones a sus archivos directamente.

Usar tu código adicional a través de Hooks te permite conservar las modificaciones que realices luego de una actualización de WordPress
2- Tipos de Hooks
Existen dos tipos de Hooks, las acciones y los filtros, ambos son muy parecidos en su estructura y forma de usarlos, sin embargo difieren en el valor que retornan.
2.1 – Action Hooks
Las acciones te permiten agregar funcionalidad, ejecutando tus propias funciones en un determinado punto, por ejemplo llegado a un punto:
- Insertar scripts
- Mostrar un formulario
- Validar un usuario
- Imprimir un mensaje, etc
Como ves, si encuentras un punto en donde puedas trabajar con un Action Hook, no estas restringido a devolver algún tipo de valor particular.
En los archivos de WordPress para localizar en donde puedes insertar un Action Hook debes buscar la función do_action(), luego, puedes hacer referencia a tu código a través de una función llamada add_action, tal como se ve en la siguiente imagen:

Sintaxis de add_action
add_action( string $hook, callable $tu_funcion, int $prioridad = 10, int $args = 1 )
Como ves, los parámetros requeridos son los dos primeros, el nombre del hook y el nombre de tu función, los otros dos parámetros son opcionales, indican la prioridad de ejecución y la cantidad de argumentos pasados a la función. Para más información puedes revisar la documentación oficial de add_action.
2.2- Filter Hooks
Los filtros, al igual que las acciones, nos permiten ejecutar una función personalizada en un determinado punto, sin embargo la función que usemos tendrá un parámetro de entrada, dentro de nuestra función haremos modificaciones al parámetro y finalmente volveremos a retornar el parámetro.
Algunos valores devueltos por los filtros son por ejemplo:
- Cadenas de texto
- Arrays
En los archivos de WordPress para localizar en donde puedes insertar un Filter Hook debes buscar la función apply_filters(), luego, puedes hacer referencia a tu código a través de una función llamada add_filter, tal como se ve en la siguiente imagen:

Sintaxis de add_filter
add_filter( string $hook, callable $tu_funcion, int $prioridad = 10, int $args = 1 )
Al igual que una acción, en el caso de un filtro los parámetros requeridos son los dos primeros, el nombre del hook y el nombre de tu función, los otros dos parámetros son opcionales.
Para usar un filtro, al construir tu función, tendrás al menos un parámetro de entrada por defecto, el cual deberás devolverlo luego de modificarlo. Para más información puedes revisar la documentación oficial de add_filter.
3- Usando Hooks
En el siguiente ejemplo aprenderás cómo reemplazar el título de una entrada, lo podrás hacer usando tanto acciones como filtros.
Usando Acciones
add_action( 'the_post', 'dcms_cambiar_objeto_post' );
function dcms_cambiar_objeto_post( $post_object ) {
// print_r($post_object);
$post_object->post_title = str_replace('Hola', 'Hi', $post_object->post_title);
}
En el código anterior:
- Usamos el Action Hook the_post que hace referencia a la función dcms_cambiar_objeto_post
- La función dcms_cambiar_objeto_post por defecto tiene un parámetro que es el objeto post
- Podemos ver toda lo que contiene el objeto con la función print_r
- En el ejemplo estamos cambiando el título, si encuentra el texto “Hola” lo cambia por “Hi”
- No necesitamos retornar ningún valor porque el objeto se pasa por referencia
Usando Filtros
add_filter( 'the_title', 'dcms_filtro_titulo' );
function dcms_filtro_titulo( $titulo ) {
$titulo = str_replace('Hola', 'Hi', $titulo);
return $titulo;
}
En el código anterior:
- Usamos el Filter Hook the_title que hace referencia a la función dcms_filtro_titulo
- La función acepta el texto del título como parámetro por defecto
- Cambiamos la variable $titulo, si encuentra el texto “Hola” lo cambia por “Hi”
- Finalmente es necesario retornar el valor de la variable $titulo
4- ¿Cómo localizar Hooks?
Una forma para localizar los Hooks que quieres modificar es navegando en el código fuente de WordPress, sin embargo otra opción es usar un sitio web como Hookr que te ofrece un índice de los hooks disponibles de acuerdo a la funcionalidad.
Otras referencias similares a tener en cuenta
¿Aún con dudas?, en el siguiente video se explica cada uno de los puntos tratados anteriormente
Hola! Cómo puedo modificar el título de mi página web de WordPress utilizando código ya que desde “Apariencia” -> “Personalizar” no me permite modificar el título para que en vez de por ejemplo sea así: “ESTE ES MI SITIO”, Aparezca esto: “Este es mi Sitio”. Uso el tema Twenty Seventeen de WordPress.org. Muchas gracias de antemano! Excelentes tutoriales!!
Hola, en el caso que comentas sólo sería necesario hacerlo por CSS, es posible que el theme tenga text-transform:uppercase, por eso te lo pasa a mayúsculas, revisa todas las posibilidades que tienes : https://www.w3schools.com/cssref/pr_text_text-transform.asp , este artículo te puede ayudar: https://decodecms.com/usar-el-inspector-de-codigo-para-modificar-un-theme-wordpress/
Hola Buenas tardes
Tengo en mi escritorio unos archivos que necesito subir a WordPress, estos archivos están en php, si los subo como lo explicas, estos al momento de ir a la pagina que darian con toda la información?
Dudo que funcionen, si tus archivos hacen algo podrías ponerlos en alguna ruta y usar un iframe para mostrarlo en tu sitio.
Hola, Jhon. Espero me puedas ayudar en esto.
¿Que hooks podría usar para ocultar el contador inventario de un producto al publico en woocommerce, pero manteniendo mi inventario interno en el sistema?.
Gracias.
Hola, creo que lo más rápido sería ocultarlo con código CSS
Hola buenas tardes
Un producto de nuestra tienda cuenta con 3 variaciones:
la primera variación descontaría 1 pieza del inventario.
la segunda variación descontaría 3 piezas del inventario.
La tercera variación descontaria 5 piezas del inventario.
Podrías orientarme en como realizar el hook para hacer esta acción?
Hola, no entiendo esto que comentas con los Hooks, salvo que tu mismo lo estes programando por código.
Hola Jhon gracias por tu informacion.
Si quiero obtener información de otro servidor (Azuracast) para ingresar la data a mi web y comparar versus una base de datos (la cual se alimenta de formularios en mi web) para votar ciertas variables de acuerdo a eso, me gustaria ver mas detalles de este trabajo. Te podría contactar? Gracias
Hola, si, puedes usar el formulario de contacto para eso: https://decodecms.com/contacto/
Hola Jhon
Cómo puedo hacer para editar el diseño del carrito de compras de woocommerce?
Hola, tendrías que usar CSS para el diseño de colores, tipo de letra, etc. Revisa: https://decodecms.com/usar-el-inspector-de-codigo-para-modificar-un-theme-wordpress/ , en caso quieras cambiar la estructura posiblemente requieras tocar los archivos .php de tu theme.
Hola muy bueno como explicas, me encanto, te hago una consulta, yo quiero modificar mi plugins learn Press para que en vez de mostrarme en el examen una pregunta me muestre las 100 que tengo en mi academia, me podrías indicar que tutorial de esto es recomendable?¿Lo hago sobre el plugin y también sobre el tema? Gracias
Hola, tendrías primero que ubicar qué hook usar, veo que aqui lo documentan: https://github.com/asharirfan/LearnPress/blob/master/inc/lp-template-hooks.php , luego el código que uses con ese Hook si que podría ser más complicado, igual no puedo darte detalles porque no conozco el plugin. Saludos.
Muchas gracias, ahora lo miro, es learnpress, básicamente lo que quiero hacer es que me muestre las preguntas de todo el examen de mi academia y no solo de a una. Gracias por el otro link ahora lo miro
Hola, espero me puedas ayudar, leo frecuentemente tus posts… como puedo incluir documentos de una libreria de php en este caso spreadphp que es para leer un documento .xlsx dentro de mi panel de administracion en un plugin que estoy desarrollando, he intentado con “include” mas la direccion de donde se encuentran los archivos pero me manda un error, me dice que tego que usar un do_action, podrias orientarme?
Hola, el do_action es para ejecutar hooks, pero entiendo que en tu caso quieres hacer referencias a clases, tendrías que detectar cual es la clase principal de tu librería y luego instanciarla, lo usual es usar composer de PHP para incluír librerías en tu plugin, espero hacer un artículo en un futuro para esto.