仅在 Woocommerce 中编辑产品标签存档页面的面包屑
Editing breadcrumb for product tag archive pages only in Woocommerce
我发现在 WooCommerce (WC) 中我可以直接编辑以获得我想要的结果,即编辑以下功能:https://github.com/woocommerce/woocommerce/blob/master/includes/class-wc-breadcrumb.php#L222
private function add_crumbs_product_tag() {
$current_term = $GLOBALS['wp_query']->get_queried_object();
$this->prepend_shop_page();
/* translators: %s: product tag */
$this->add_crumb( sprintf( __( 'My Edit: %s', 'woocommerce' ), $current_term->name ), get_term_link( $current_term, 'product_tag' ) );
}
现在我知道直接编辑 WC 插件是不好的做法,所以我正在寻找替代方法,这样当 WC 更新时,更改不会被覆盖。
覆盖尝试
我试图将我编辑的 class 添加到我的子主题 (mytheme-child/woocommerce/includes/class-wc-breadcrumb.php) 但这似乎不起作用。
我能做什么?
使用特定的 woocommerce_get_breadcrumb
过滤器挂钩尝试以下操作:
add_filter( 'woocommerce_get_breadcrumb', 'custom_product_tag_crumb', 20, 2 );
function custom_product_tag_crumb( $crumbs, $breadcrumb ){
// Targetting product tags
$current_taxonomy = 'product_tag';
$current_term = $GLOBALS['wp_query']->get_queried_object();
$current_key_index = sizeof($crumbs) - 1;
// Only product tags
if( is_a($current_term, 'WP_Term') && term_exists( $current_term->term_id, $current_taxonomy ) ) {
// The label term name
$crumbs[$current_key_index][0] = sprintf( __( 'My Edit: %s', 'woocommerce' ), $current_term->name );
// The term link (not really necessary as we are already on the page)
$crumbs[$current_key_index][1] = get_term_link( $current_term, $current_taxonomy );
}
return $crumbs;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
我发现在 WooCommerce (WC) 中我可以直接编辑以获得我想要的结果,即编辑以下功能:https://github.com/woocommerce/woocommerce/blob/master/includes/class-wc-breadcrumb.php#L222
private function add_crumbs_product_tag() {
$current_term = $GLOBALS['wp_query']->get_queried_object();
$this->prepend_shop_page();
/* translators: %s: product tag */
$this->add_crumb( sprintf( __( 'My Edit: %s', 'woocommerce' ), $current_term->name ), get_term_link( $current_term, 'product_tag' ) );
}
现在我知道直接编辑 WC 插件是不好的做法,所以我正在寻找替代方法,这样当 WC 更新时,更改不会被覆盖。
覆盖尝试
我试图将我编辑的 class 添加到我的子主题 (mytheme-child/woocommerce/includes/class-wc-breadcrumb.php) 但这似乎不起作用。
我能做什么?
使用特定的 woocommerce_get_breadcrumb
过滤器挂钩尝试以下操作:
add_filter( 'woocommerce_get_breadcrumb', 'custom_product_tag_crumb', 20, 2 );
function custom_product_tag_crumb( $crumbs, $breadcrumb ){
// Targetting product tags
$current_taxonomy = 'product_tag';
$current_term = $GLOBALS['wp_query']->get_queried_object();
$current_key_index = sizeof($crumbs) - 1;
// Only product tags
if( is_a($current_term, 'WP_Term') && term_exists( $current_term->term_id, $current_taxonomy ) ) {
// The label term name
$crumbs[$current_key_index][0] = sprintf( __( 'My Edit: %s', 'woocommerce' ), $current_term->name );
// The term link (not really necessary as we are already on the page)
$crumbs[$current_key_index][1] = get_term_link( $current_term, $current_taxonomy );
}
return $crumbs;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。