php - ocultar - WooCommerce breadcrumbs múltiples categorías
remove woocommerce breadcrumbs (2)
Si está utilizando Woocommerce, puede usar lo siguiente directamente, si no, necesitará adaptarse, pero se le ocurre la siguiente idea:
elseif ( is_single() && ! is_attachment() ) {
if ( get_post_type() == ''product'' ) {
echo $prepend;
if ( $terms = get_the_terms( $post->ID, ''product_cat'' ) ) {
$referer = wp_get_referer();
foreach( $terms as $term){
$referer_slug = (strpos($referer, $term->slug));
if(!$referer_slug==false){
$category_name = $term->name;
$ancestors = get_ancestors( $term->term_id, ''product_cat'' );
$ancestors = array_reverse( $ancestors );
foreach ( $ancestors as $ancestor ) {
$ancestor = get_term( $ancestor, ''product_cat'' );
if ( ! is_wp_error( $ancestor ) && $ancestor )
echo $before . ''<a href="'' . get_term_link( $ancestor->slug, ''product_cat'' ) . ''">'' . $ancestor->name . ''</a>'' . $after . $delimiter;
}
echo $before . ''<a href="'' . get_term_link( $term->slug, ''product_cat'' ) . ''">'' . $category_name . ''</a>'' . $after . $delimiter;
}
}
}
echo $before . get_the_title() . $after;
La mayor parte del trabajo aquí lo realiza wp_get_referer
que obtiene la URL de referencia del producto al que ha navegado su visitante. El resto del código verifica si una categoría válida está contenida dentro de la URL y la usa en la ruta de navegación.
Ver Jonathon Js publicar aquí para más información http://www.cryoutcreations.eu/forums/t/wrong-breadcrumbs-displayed
Tengo un sitio web de comercio electrónico en wordpress. Hay mucho producto en él y muchos productos vienen en múltiples categorías como 600 mah. El banco de potencia viene en automóviles, informática, medios, etc. Mi problema es que cuando voy al detalle de un producto, allí, por defecto, recojo solo una categoría. no importa si pasa por la categoría de TI al final, me muestra un automóvil como este Inicio / Tienda / industria / Automóvil / 600 mah Power Bank. Pero fui a este producto a través de TI, así que debería mostrarme así Home / Tienda / industria / IT / 600 mah Power Bank. ¿Cómo puedo ir a la ruta de donde vengo desde la página anterior?
Mi solución es:
if (! empty ($ breadcrumb)) {
echo $wrap_before;
if (is_single() && get_post_type() == ''product'') {
$breadcrumb_diff = [];
$breadcrumb_diff[] = $breadcrumb[0];
if ($terms = get_the_terms($post->ID, ''product_cat'')) {
$referer = wp_get_referer();
$site_url = site_url();
$referer = str_replace($site_url . ''/zoomagazin/'', '''', $referer);
$referer_array = explode(''/'', $referer);
foreach ($referer_array as $term_slug) {
$get_term_by_slug = get_term_by(''slug'', $term_slug, ''product_cat'');
$breadcrumb_diff[] = [$get_term_by_slug->name, get_term_link($term_slug, ''product_cat'')];
}
$breadcrumb_diff[]= $breadcrumb[count($breadcrumb) - 1];
foreach ($breadcrumb_diff as $key => $crumb) {
echo $before;
if (!empty($crumb[1]) && sizeof($breadcrumb_diff) !== $key + 1) {
echo ''<a href="'' . esc_url($crumb[1]) . ''">'' . esc_html($crumb[0]) . ''</a>'';
} else {
echo esc_html($crumb[0]);
}
echo $after;
if (sizeof($breadcrumb) !== $key + 1) {
echo $delimiter;
}
}
}
} else {
foreach ($breadcrumb as $key => $crumb) {
echo $before;
if (!empty($crumb[1]) && sizeof($breadcrumb) !== $key + 1) {
echo ''<a href="'' . esc_url($crumb[1]) . ''">'' . esc_html($crumb[0]) . ''</a>'';
} else {
echo esc_html($crumb[0]);
}
echo $after;
if (sizeof($breadcrumb) !== $key + 1) {
echo $delimiter;
}
}
}
echo $wrap_after;
}