Tái định vị WooC Commerce Breadcrumb bên ngoài nội dung trình bao bọc


9

Tôi hiện có mã này trong tệp chức năng của mình cho plugin WooC Commerce ..

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

Bây giờ tôi muốn định vị lại mẩu bánh mì WooC Commerce bên ngoài lớp part.main, nhưng tôi không thể thấy cách làm điều này. Có cách nào để làm việc này không?

Đây là mã tôi có cho mẩu bánh mì WooC Commerce ...

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 );
}

Tôi đã thử đặt thẻ part.main vào dòng 'trước', nhưng điều này chỉ thêm một thẻ phần trong mẩu bánh mì, nó không định vị lại mẩu bánh mì.

Câu trả lời:


20

Ok tôi dường như đã làm cho nó hoạt động. Tôi đã thêm cái này vào tập tin chức năng ...

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

Sau đó thêm ...

do_action('woo_custom_breadcrumb'); 

... nơi tôi muốn bánh mì hiển thị.


1

Đã thử mã của bạn nhưng nó sẽ không hoạt động.

Thay vào đó tôi loại bỏ các hành động trên trang được nhắm mục tiêu.

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

Và bao gồm nó nhờ một cái móc nơi tôi muốn:

<?php woocommerce_breadcrumb();?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.