Vuelva a colocar la ruta de navegación de WooCommerce fuera del contenido del contenedor

9

Actualmente tengo este código en mi archivo de funciones para el complemento 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 la ruta de navegación de WooCommerce fuera de la clase section.main, sin embargo, no puedo ver cómo hacerlo. ¿Hay alguna forma de hacer esto?

Este es el código que tengo para la ruta de navegación de WooCommerce ...

function woocommerce_breadcrumb( $args = array() ) {

    $defaults = apply_filters( 'woocommerce_breadcrumb_defaults', array(
        'delimiter'   => ' &#47; ',
        'wrap_before' => '<nav class="bcrumb" itemprop="breadcrumb">',
        'wrap_after'  => '</nav>',
        'before'      => '',
        'after'       => '',
        'home'        => _x( 'Home', '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 'antes', pero esto solo agrega una etiqueta de sección en la ruta de exploración, no reposiciona la ruta de exploración.

Adán
fuente

Respuestas:

20

Ok, parece que lo tengo funcionando. Agregué esto en el archivo de funciones ...

//Reposition WooCommerce breadcrumb 
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 agregó ...

do_action('woo_custom_breadcrumb'); 

... donde quería que apareciera la miga de pan.

Adán
fuente
1

Intenté su código pero no funcionaría.

En cambio, eliminé la acción en la página de destino.

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 gancho donde quería con:

<?php woocommerce_breadcrumb();?>
Francois
fuente