如何更改WooCommerce面包屑内容?

时间:2016-03-22 作者:Alberto Fontana

我想直接从PHP定制面包屑。有些页面是动态生成的,不存在于数据库中,因此我必须使用某种PHP脚本自动将它们放入面包屑中。

我不需要更改默认内容,如主页url、分隔符等。。。但我实际上需要在面包屑中手动放置一些页面。我试着用一些过滤器和钩子。

I\'ve read the documentation 但它只是解释了如何更改默认内容。

如何更改面包屑的实际内容?

我试过这个:

add_filter( \'woocommerce_breadcrumb\', \'change_breadcrumb\' );
function change_breadcrumb( $defaults ) {
    // Change the breadcrumb home text from \'Home\' to \'Appartment\'
    //do something
    return $defaults;
}
但是//do something 从不执行。就好像过滤器从未被调用过一样

1 个回复
最合适的回答,由SO网友:honk31 整理而成

这是因为你的过滤器woocommerce_breadcrumb 甚至不存在。

此过滤器在此工作并提取当前位于面包屑(作为一个数组)中的所有元素:

add_filter( \'woocommerce_get_breadcrumb\', \'change_breadcrumb\' );
function change_breadcrumb( $crumbs ) {
    var_dump( $crumbs );

    return $crumbs;
}
这个过滤器将main term (作为对象)。

add_filter( \'woocommerce_breadcrumb_main_term\', \'change_breadcrumb\' );
function change_breadcrumb( $main_term ) {
    var_dump( $main_term );

    return $main_term;
}
“main term”只是此函数返回的第一个元素(reference):

$terms = wc_get_product_terms( $post->ID, \'product_cat\', array( \'orderby\' => \'parent\', \'order\' => \'DESC\' ) )
请参见Action and Filter Hook Reference 由woothemes为所有挂钩和;过滤器。

相关推荐

绕过WP查询中的“supress_Filters”

显然,出于某种不合逻辑的原因,开发人员决定获取所有语言帖子的唯一方法是添加supress_filters=true 到WP\\u查询(而不是像这样language_code=all 选项)。无论如何,我的情况是,我需要获取所有语言的帖子,但也需要使用过滤器修改WP\\u查询。有没有办法强制将我的过滤器添加到查询中,即使supress_filters 设置为false?这是我需要添加的过滤器:add_filter( \'posts_where\', function($where, $wp_query) {