Repoziționarea breadcrumb-ului WooCommerce în afara wrapper-ului de conținut

19 mai 2013, 00:03:04
Vizualizări: 19K
Voturi: 9

În prezent am acest cod în fișierul de funcții pentru plugin-ul 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' );

Acum aș dori să repoziționez breadcrumb-ul WooCommerce în afara clasei section.main, dar nu văd cum să fac asta. Există vreo metodă pentru a realiza acest lucru?

Acesta este codul pe care îl am pentru breadcrumb-ul 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( 'Acasă', 'breadcrumb', 'woocommerce' ),
    ) );

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

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

Am încercat să pun tag-ul section.main în linia 'before', dar acest lucru doar adaugă un tag de secțiune în breadcrumb, nu repoziționează breadcrumb-ul.

0
Toate răspunsurile la întrebare 2
0
22

Bine, se pare că am reușit să fac să funcționeze. Am adăugat acest cod în fișierul functions...

//Repoziționează breadcrumb-ul 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' );

Apoi am adăugat...

do_action('woo_custom_breadcrumb'); 

...acolo unde am vrut să apară breadcrumb-ul.

19 mai 2013 00:22:03
0

Am încercat codul tău dar nu a funcționat.

În schimb am eliminat acțiunea de pe pagina țintă.

// Funcție pentru eliminarea breadcrumb-urilor din Storefront pe paginile de produs
function wc_remove_storefront_breadcrumbs() {
    if ( is_single() ){ // Verifică dacă este o pagină single (de produs)
        remove_action( 'storefront_before_content', 'woocommerce_breadcrumb', 10 );
    }
}
// Adaugă acțiunea la hook-ul 'wp'
add_action( 'wp', 'wc_remove_storefront_breadcrumbs');  

Și am inclus breadcrumb-urile mulțumită unui hook unde am dorit cu:

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