Contenido del curso
Crear Post Types y Archivos
- 4

Organización de Contenidos en WordPress: Taxonomías y Etiquetas
03:02 min - 5

Creación de Archivos PHP en WordPress para Mostrar Categorías
10:21 min - 6

Mejorando la Navegabilidad en Sitios Web con WordPress
06:07 min - 7

Personalización de Post Types en WordPress
02:12 min - 8

Diferenciar Interfaces de Productos y Novedades en WordPress
02:14 min - 9

WordPress: Crear Menú de Productos Relacionados con Loop Personalizado
11:20 min - 10

Registro de Taxonomías Personalizadas en WordPress
18:42 min - 11

Personalización de Páginas en WordPress con Advanced Custom Fields
10:31 min
Utilizar AJAX
La REST-API de WordPress
Utilizar Bloques
- 19

Creación y Uso de Bloques en el Editor Gutenberg de WordPress
05:18 min - 20

Creación de Bloques Personalizados en WordPress con PHP y JavaScript
13:30 min - 21

Creación de Bloques Editables en WordPress con React
11:16 min - 22

Bloques Dinámicos en WordPress: Creación y Uso Avanzado
05:47 min - 23

Uso de InspectorControls en Bloques de WordPress
04:48 min - 24

Registro y Personalización de Bloques en WordPress con ACF
12:51 min - 25

Creación de Bloque Nativo con Renderizado del Lado del Servidor (SSR)
11:38 min
Deployment
Finalizar el Curso
Filtro de Productos con PHP y JavaScript en WordPress
Resumen
Construir un filtro dinámico de productos es una de las funcionalidades más útiles en cualquier tienda o catálogo desarrollado con WordPress. Aquí se aborda paso a paso cómo crear un selector de categorías en la página principal, cargarlo con datos reales de taxonomías y preparar la comunicación con el servidor mediante Ajax y jQuery, sentando las bases para un filtrado sin recarga de página.
¿Cómo agregar un selector de categorías en la página principal?
El punto de partida es el archivo front page, donde ya existe un loop que muestra todos los productos dentro de un row con su título principal. Para incorporar el filtro se añade una nueva columna con clases de Bootstrap que ocupe todo el ancho del contenedor [01:00].
Dentro de esa columna se crea un elemento select con las siguientes características:
- name e id con el valor
categorias_productos. - Una primera opción con value vacío y el texto "Todas las categorías", que indica que no hay filtro activo.
- La clase
form-controlde Bootstrap para mejorar la apariencia visual del campo [02:05].
html <select name="categorias_productos" id="categorias_productos" class="form-control">
<option value="">Todas las categorías</option> </select>¿Cómo cargar las categorías dinámicamente con get_terms?
Para que el selector muestre las categorías reales se utiliza la función get_terms de WordPress [02:30]. Esta función recibe dos parámetros principales:
- El nombre de la taxonomía (el slug que se definió al registrarla, por ejemplo
categoria_productos). - Un array de argumentos; en este caso se pasa
'hide_empty' => truepara ocultar términos sin productos asociados.
El resultado se almacena en una variable $terms, que contiene un array de objetos. Cada objeto posee propiedades como slug (identificador único del término) y name (nombre visible). Con un foreach se recorre ese array y se genera dinámicamente cada <option> [03:20]:
php
<?php $terms = get_terms('categoria_productos', array('hide_empty' => true)); foreach ($terms as $term) { echo '<option value="' . $term->slug . '">' . $term->name . '</option>'; } ?>Un error frecuente al concatenar cadenas en PHP es olvidar el operador punto (.), lo que provoca un error de sintaxis. Al corregirlo, el selector muestra correctamente las opciones —en el ejemplo, "Indumentaria" y "Souvenirs" [04:40].
¿Cómo configurar jQuery para escuchar cambios en el selector?
El siguiente paso ocurre en el archivo JavaScript del tema. Para que WordPress reconozca correctamente jQuery, es necesario encapsular todo el código dentro de una estructura específica [05:30]:
javascript (function($) { // Todo el código jQuery va aquí })(jQuery);
El parámetro $ dentro de la función permite usar el signo de pesos como alias de jQuery sin conflictos con otras librerías. Un detalle importante: todo el código debe estar dentro de esta función contenedora, ya que de lo contrario los eventos no se registran correctamente [06:50].
¿Cómo detectar el evento change con jQuery?
Se localiza el selector por su id y se le asigna el evento change. Cada vez que el usuario elige una categoría distinta, se ejecuta la función asociada:
javascript $('#categorias_productos').change(function() { // Lógica del filtro });
Para verificar que el evento funciona, se puede colocar un console.log('hola') dentro de la función y observar la consola del navegador [06:20].
¿Cómo se estructura la llamada Ajax en jQuery?
Una vez confirmado el evento, se reemplaza el console.log por la función $.ajax, que recibe un objeto con parámetros clave [07:30]:
- url: la dirección del servidor que procesará la petición (se resolverá en la siguiente etapa mediante la inyección de variables desde PHP a JavaScript).
- method: el tipo de petición HTTP, en este caso
'POST'. - data: la información que se enviará al servidor, como la categoría seleccionada.
javascript $.ajax({ method: 'POST', url: '', // Se definirá con datos inyectados desde PHP data: {} });
El paso pendiente —y fundamental— es aprender a pasar la URL de Ajax desde PHP al archivo JavaScript. WordPress utiliza un mecanismo particular para esto que permite localizar correctamente el endpoint del servidor y completar el ciclo de comunicación asíncrona.
Si ya trabajaste con taxonomías personalizadas y quieres llevar tu tema al siguiente nivel con filtros dinámicos, comparte cómo estás estructurando tu proyecto o qué dudas te surgen al integrar Ajax con WordPress.