Rank Math es una herramienta muy útil a la hora de trabajar en SEO de una página web desarrollada en WordPress. Cuenta con múltiples opciones y entre ellas encontramos una que puede pasar desaparecida, que es la de fijar categorías como primarias. Esta utilidad sirve para que a la hora de construir las URLs podamos decidir qué categoría es la que se incluirá en lugar de dejar que el sistema fije una.
Cuando trabajamos con WooCommerce y tenemos múltiples categorías anidadas, definir una categoría primaria puede ser esencial para no generar rutas muy largas o confusas. Sin embargo que sistema tiene un gran inconveniente y es que no se pueden asignar por lote. En tiendas pequeñas quizá no sea una traba, pero cuando hablamos de portales con miles de productos la cosa cambia y se convierte en una auténtica pesadilla.
Mientras esperamos a ver si deciden incorporar esta útil función, vamos a ver cómo hacerlo a través de la base de datos usando una consulta SQL. Si bien la consulta es sencilla de hacerla y solo tienes que copiarla, es importante que tengas en cuenta que modificar cosas directamente en la base de datos de una web implica riesgos, por lo que si no estás familiarizado con el desarrollo web no te recomiendo continuar.
La idea tras la consulta es sencilla: si un producto tiene una categoría x, fijamos esta categoría como primaria. Para indicar qué categoría queremos fijar, usaremos el ID de la misma, este ID puedes verlo en la URL al editarla.
Ahora vamos con ello. Lo primero es que hagas una copia de seguridad de la base de datos para que puedas restituirla en caso de error. Después de eso ve a tu administrador, normalmente MySQL, y en el área superior verás la pestaña SQL que es donde introduce la consulta siguiente:
SET @CAT_ID = 548; -- pon aquí el term_id real
UPDATE wp_postmeta pm
JOIN (
SELECT p.ID
FROM wp_posts p
JOIN wp_term_relationships tr ON p.ID = tr.object_id
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'product_cat'
AND tt.term_id = @CAT_ID
AND p.post_type = 'product'
) q ON pm.post_id = q.ID
SET pm.meta_value = @CAT_ID
WHERE pm.meta_key = 'rank_math_primary_product_cat';
En SET @CAT_ID introduce el ID de la categoría que quieres que sea primaria y asegúrate que el prefijo de las tablas sea el que tienes en tu base de datos, por defecto es wp_. Tras hacerlo ejecuta la consulta y los datos se actualizarán en todos los productos que contengan esa categoría. Deberías ver después el selector de Rank Math marcado en el lugar correspondiente.
El proceso tendrás que repetirlo con cada categoría que quieras marcar como primaria, lo que dependiendo de la complejidad de tu tienda WooCommerce te podrá llevar un buen rato, pero desde luego será mucho más rápido que hacerlo manualmente producto por producto.
Para el caso de que tengas una web tienda con varios idiomas usando WPML y quieras cribar la consulta por un idioma concreto, te dejo una versión alternativa.
SET @CAT_ID = 548; -- pon aquí el term_id real
UPDATE wp_postmeta pm
JOIN (
SELECT p.ID
FROM wp_posts p
JOIN wp_term_relationships tr ON p.ID = tr.object_id
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN wp_icl_translations t ON p.ID = t.element_id AND t.element_type = 'post_product'
WHERE tt.taxonomy = 'product_cat'
AND tt.term_id = @CAT_ID
AND t.language_code = 'es'
AND p.post_type = 'product'
) q ON pm.post_id = q.ID
SET pm.meta_value = @CAT_ID
WHERE pm.meta_key = 'rank_math_primary_product_cat';
Modifica la línea que contiene language_code y cambia su valor por el del idioma que te interese modificar.






Deja una respuesta