Zmień położenie elementu nawigacyjnego WooCommerce poza zawartość opakowania

9

Obecnie mam ten kod w pliku funkcji wtyczki 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' );

Teraz chciałbym zmienić położenie okruszki WooCommerce poza klasą section.main, ale nie widzę, jak to zrobić. Czy jest na to sposób?

To jest kod, który mam dla bułki tartej 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 );
}

Próbowałem umieścić znacznik section.main w wierszu „przed”, ale dodaje to tylko znacznik section w bułce tartej, ale nie zmienia położenia bułki tartej.

Adam
źródło

Odpowiedzi:

20

Ok, wydaje mi się, że to działa. Dodałem to w pliku funkcji ...

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

Następnie dodano ...

do_action('woo_custom_breadcrumb'); 

... gdzie chciałem pokazać bułkę tartą.

Adam
źródło
1

Próbowałem kodu, ale nie zadziałał.

Zamiast tego usunąłem akcję na docelowej stronie.

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

I zawarłem to dzięki haczykowi, w którym chciałem z:

<?php woocommerce_breadcrumb();?>
Francois
źródło