2020
27
11

Error miga de pan de WooCommerce productos con varias categorías.

por: Julio Gilete
error miga de pan WooCommerce

La miga de pan de WooCommerce se genera de forma automática para cada uno de los productos. Pero, en el caso de que un producto tenga más de una categoría asignada, podría generar confusión a la hora de navegar a través de la miga de pan.

Ejemplo del error:

Tienda de ropa en la que los productos pertenecen a varias categorías. Una chaqueta tiene asignada las categorías «punto», «abrigos y chaquetas» y «nueva colección».

Al ver la ficha de la chaqueta, la miga de pan que se muestra puede no ser la de la categoría del menú por la que hemos llegado al producto, confundiendo al usuario.

Si pulsó «nueva colección» y la miga de pan de la ficha de la chaqueta pone «punto», para ver más productos de «nueva colección», no podrá hacerlo desde la miga de pan.

Cómo poner la miga de pan de WooCommerce según procedencia

Para añadir a Woocoomerce una lógica a la hora de generar la miga de podemos añadir el siguiente «filter«. Se encarga de generar una miga de pan a partir de la categoría por la que se accedió al producto.

Lo que hacemos es mirar desde donde se llega a la página de producto.

Si la página de llegada es diferente de la que se va a pintar en el segundo nivel de la miga de pan, troceamos la URL de llegada para recuperar el último fragmento. Con ese fragmento, buscamos en WordPress alguna categoría de producto que coincida con el slug:

  • Si encontramos una, cambiamos el link y el nombre del segundo nivel de la miga de pan por el que acabamos de encontrar.
  • En caso de no encontrar ninguna categoría dejamos la miga exactamente igual.

Este es el código (para la versión del plugin WooCommerce 4.7.0).

Copia el código al final del fichero functions.php (está en la carpeta del tema activo) :

/* Cambiamos el segundo nivel de la miga de pan cuando se entra en un producto 
si la categoría por la que se entra es diferente a la genérica */
add_filter( 'woocommerce_get_breadcrumb', 'woo_custom_category_breadcrum', 20);
function woo_custom_category_breadcrum($breadcrumb) {
	
	if (is_product()) {
		// Si el referido es diferente que la categoria que se va a pintar en la miga de pan
		// Recuperamos la miga de pan desde la que se entró al producto
		if ($_SERVER['HTTP_REFERER'] != $breadcrumb[1][1]) {
			// Recuperamos el último segemento de la url de referido
			$slash = explode('/', $_SERVER['HTTP_REFERER']);
			$slug = isset($slash[sizeof($slash)-2] ) ? $slash[sizeof($slash)-2] : false;
			// Y filtramos las categorías de productos utilizando el slug
			$wp_category = $slug ? get_terms(
				array(
					'slug' => $slug,
					'taxonomy' => 'product_cat',
					'numpost' => 1
				)
			) : [];
			// Si encontramos algún registro lo cambiamos por el genérico
			if (sizeof($wp_category)) {
				list($category) = $wp_category;
				$breadcrumb[1][0] = $category->name;
				$breadcrumb[1][1] = get_term_link( $category->term_id, 'product_cat');
				// Eliminamos las posibles categorias intermedias que tuviera por defecto
				$breadcrumb = array_values(array_filter($breadcrumb, function($key) use ($breadcrumb) {
					return ($key < 2 || sizeof($breadcrumb)-1 == $key);
				}, ARRAY_FILTER_USE_KEY));
			}
		}
	}
    return $breadcrumb;
}

Con esto le devolvemos la funcionalidad lógica a la miga de pan: tener un recorrido por los sitios que hemos pasado, hasta llegar al punto en el que estamos.

¿Pensando en tener una tienda online? ¡te ayudamos! Mira nuestras ofertas para desarrollo de tiendas online>>

GD Star Rating
loading...
Error miga de pan de WooCommerce productos con varias categorías., 5.0 de 5 basado en 1 calificaciones.

tags:


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  Acepto la política de privacidad