Repositionner le fil d'Ariane WooCommerce en dehors du contenu de l'emballage

9

J'ai actuellement ce code dans mon fichier de fonctions pour le 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' );

Maintenant, je voudrais repositionner le fil d'Ariane WooCommerce en dehors de la classe section.main, mais je ne vois pas comment faire cela. Y a-t-il un moyen de faire cela?

Voici le code que j'ai pour le fil d'Ariane 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 );
}

J'ai essayé de mettre la balise section.main dans la ligne 'avant', mais cela n'ajoute qu'une balise de section dans le fil d'Ariane, cela ne repositionne pas le fil d'Ariane.

Adam
la source

Réponses:

20

Ok, je semble l'avoir fait fonctionner. J'ai ajouté ceci dans le fichier des fonctions ...

//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' );

Puis ajouté ...

do_action('woo_custom_breadcrumb'); 

... où je voulais montrer le fil d'Ariane.

Adam
la source
1

J'ai essayé votre code mais cela ne fonctionnerait pas.

Au lieu de cela, j'ai supprimé l'action sur la page ciblée.

function wc_remove_storefront_breadcrumbs() {
    if ( is_single() ){
        remove_action( 'storefront_before_content', 'woocommerce_breadcrumb', 
10 );
    }
  }
add_action( 'wp', 'wc_remove_storefront_breadcrumbs');  

Et inclus grâce à un crochet où je voulais avec:

<?php woocommerce_breadcrumb();?>
François
la source