使用Yoast SEO Breadcrumb覆盖WooCommerce Shop Site Breadcrumb

时间:2016-10-25 23:07:14

标签: wordpress woocommerce breadcrumbs

我尝试使用以下代码删除WooCommerce Breadcrumbs:

add_action( 'init', 'remove_wc_breadcrumbs' ); 
function remove_wc_breadcrumbs() { 
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 ); 
}

......哪个有效。

之后我激活了Yoast Seo Plugin Breadcrumbs,将此代码放入我的主题header.php

<?php if ( function_exists('yoast_breadcrumb') ) {
    yoast_breadcrumb('<p id="breadcrumbs">','</p>');
    } ?>

......这也有效。

当我导航到我在WooCommerce设置中定义的“shop-site”时,会出现问题。完整的面包屑看起来像这样

Home > Product

注意:WordPress中“商店网站”的网页名称是“测试”(不是“产品”)。

我想在不同的东西中覆盖“产品”。我试图通过在wordpress“shop-site”页面的高级Yoast设置中定义自定义面包屑标题来覆盖它,但它似乎不起作用。如果页面未在WooCommerce设置中定义为“shop-site”,则覆盖有效。所以我猜一些函数会覆盖Yoast Breadcrumb覆盖,但我无法弄清楚这个函数是做什么的。

导航到单个产品时会出现同样的问题。面包屑看起来像这样

Home > Product > Product Name

我想再次将“产品”(这里只有第二个面包屑)重命名为不同的东西。

有人可以解决这种神秘主义吗?

2 个答案:

答案 0 :(得分:2)

我用这段代码修复了它:

add_filter( 'wpseo_breadcrumb_output', 'custom_wpseo_breadcrumb_output' );
function custom_wpseo_breadcrumb_output( $output ){
if( is_product() ){
    $from = 'rel="v:url" property="v:title">Product</a>'; 
    $to = 'rel="v:url" property="v:title">New Title</a>';
    $output = str_replace( $from, $to, $output );
}

elseif ( is_shop() ) {
    $from = '<span class="breadcrumb_last">Products</span>'; 
    $to = '<span class="breadcrumb_last">New Title</span>';
    $output = str_replace( $from, $to, $output );
}
return $output;
}

答案 1 :(得分:0)

我想知道是否没有更简单的方法将第一个“产品”更改为“产品类别”…………

您是否已在wp-admin中尝试过

  1. 转到“酵母”
  2. 然后选择“ SEO设置”
  3. 然后“面包屑”并采用分类法(例如:product > category)。