Reposicionar el breadcrumb de WooCommerce fuera del contenedor principal

19 may 2013, 00:03:04
Vistas: 19K
Votos: 9

Actualmente tengo este código en mi archivo functions.php para el plugin WooCommerce...

function my_theme_wrapper_start()
{
  echo the_breadcrumb();
  echo '<section role="main"><div class="wrap">';
}

function my_theme_wrapper_end()
{
  echo '</div></section>';
}

function mytheme_prepare_woocommerce_wrappers()
{
  remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
  remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);

  add_action( 'woocommerce_before_main_content', 'my_theme_wrapper_start', 10 );
  add_action( 'woocommerce_after_main_content', 'my_theme_wrapper_end', 10 );
}

add_action( 'wp_head', 'mytheme_prepare_woocommerce_wrappers' );

add_theme_support( 'woocommerce' );

Ahora me gustaría reposicionar el breadcrumb de WooCommerce fuera de la clase section.main, pero no veo cómo hacerlo. ¿Existe alguna forma de hacer esto?

Este es el código que tengo para el breadcrumb de WooCommerce...

function woocommerce_breadcrumb( $args = array() ) {

    $defaults = apply_filters( 'woocommerce_breadcrumb_defaults', array(
        'delimiter'   => ' / ',
        'wrap_before' => '<nav class="bcrumb" itemprop="breadcrumb">',
        'wrap_after'  => '</nav>',
        'before'      => '',
        'after'       => '',
        'home'        => _x( 'Inicio', 'breadcrumb', 'woocommerce' ),
    ) );

    $args = wp_parse_args( $args, $defaults );

    woocommerce_get_template( 'shop/breadcrumb.php', $args );
}

He intentado poner la etiqueta section.main en la línea 'before', pero esto solo añade una etiqueta section dentro del breadcrumb, no reposiciona el breadcrumb.

0
Todas las respuestas a la pregunta 2
0
22

Parece que lo he conseguido hacer funcionar. Añadí esto en el archivo de funciones...

//Reposicionar el breadcrumb de WooCommerce
function woocommerce_remove_breadcrumb(){
    remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
}
add_action( 'woocommerce_before_main_content', 'woocommerce_remove_breadcrumb' );

function woocommerce_custom_breadcrumb(){
    woocommerce_breadcrumb();
}

add_action( 'woo_custom_breadcrumb', 'woocommerce_custom_breadcrumb' );

Luego añadí...

do_action('woo_custom_breadcrumb'); 

...donde quería que apareciera el breadcrumb.

19 may 2013 00:22:03
0

Probé tu código pero no funcionó.

En su lugar, eliminé la acción en la página objetivo.

// Función para eliminar las migas de pan de Storefront en entradas individuales
function wc_remove_storefront_breadcrumbs() {
    if ( is_single() ){
        remove_action( 'storefront_before_content', 'woocommerce_breadcrumb', 
10 );
    }
}
add_action( 'wp', 'wc_remove_storefront_breadcrumbs');  

Y lo incluí gracias a un hook donde lo quería con:

<?php woocommerce_breadcrumb();?>
22 sept 2018 10:30:53