我有一个使用woocommerce的WordPress网站(在内部页面中), 我的商店页面URL结构如下:
mysite /商店/
woocommerce页面上的面包屑仅显示首页链接, 例如:你在这里:主页
和我的产品页面网址:
Mysite /产品类别/类别名称/
我的商店页面面包屑显示如下:
You are here: Home
我的类别页面面包屑也显示如下:
You are here: Home
我需要使其显示为:
你在这里:主页/购物/ category_name
我检查了永久链接选项, 但似乎还可以。我检查了Breadcrumb.php模板文件, 似乎它认为shop()页面是我网站的主页。
如何解决此问题, 我应该编辑面包屑.php还是设置错误?提前致谢。
#1我正在调试它, 很遗憾, Woocommerce(2.3.8版)不使用任何挂钩直接调整面包屑数组。因此, 如果你要修改显示的面包屑而不更改永久链接结构, 最好是将面包屑模板文件从插件(/woocommerce/templates/global/breadcrumb.php)复制到主题(/ theme_name / woocommerce / global /)中, 然后在输出循环开始之前, 在其中添加代码以包含链接。我仅针对产品类别, 标签和详细信息执行此操作, 但你可以根据需要添加其他条件。
<
?php
/**
* Shop breadcrumb
*
* @authorWooThemes
* @packageWooCommerce/Templates
* @version2.3.0
* @seewoocommerce_breadcrumb()
*/if ( ! defined( 'ABSPATH' ) ) {
exit;
}if ( $breadcrumb ) {// add shop home url to breadcrumbs
if( is_product_category() || is_product_tag() || is_product() ) {
$shop_page_id = wc_get_page_id( 'shop' );
$shop_home_arr = array( get_the_title($shop_page_id), get_permalink($shop_page_id));
// insert to breadcrumbs array on second position
array_splice($breadcrumb, 1, 0, array($shop_home_arr));
}echo $wrap_before;
foreach ( $breadcrumb as $key =>
$crumb ) {echo $before;
if ( ! empty( $crumb[1] ) &
&
sizeof( $breadcrumb ) !== $key + 1 ) {
echo '<
a href="' . esc_url( $crumb[1] ) . '">
' . esc_html( $crumb[0] ) . '<
/a>
';
} else {
echo esc_html( $crumb[0] );
}echo $after;
if ( sizeof( $breadcrumb ) !== $key + 1 ) {
echo $delimiter;
}
}
echo $wrap_after;
}
#2这可以轻松得多。仅需要相应地更改永久链接设置-如github在问题3145上所提到的:
满足以下条件://如果永久链接包含URI中的shop页面, 则在面包屑前添加shop if($ shop_page_id & & strstr($ permalinks [‘ product_base’ ], ‘ /’ 。$ shop_page-> post_name)& & get_option(‘ page_on_front ‘ )!== $ shop_page_id){$ prepend = $ before。 ‘ < ahref=http://www.srcmini.com/” ‘ 。get_permalink($shop_page)。'” > ’ 。 $ shop_page-> post_title。 ‘ < /a> ’ 。 $ after。 $ delimiter; 否则, 它永远不会成为前提。要应用此功能, 必须转到:
→WordPress后端→设置→永久链接并将woocommerce永久链接设置设置为以下之一:
- 店铺基础
- 店铺分类
- 定制基地
问题6584:
警告:preg_match():wc-core-functions.php中第533行的未知修饰符’ t’例如, 如果?Custom Base?看起来像这样:?/ shop / product / … ?。有一个提交可以修复它, 这在master中可用, 但在2.2.8中不可用。
弹头零件车间也可以用其他东西代替, 例如本地化的东西。
#3对于在2019年偶然发现此问题的人, 如果你不想更改永久链接或编辑主题文件, 则可以使用一种更简单的方法在” 主页” 面包屑后添加项目。这可能不是一个完美的解决方案, 但对我有用。
WC_Breadcrumb类在将面包屑返回之前对其进行过滤, 我们可以挂接并修改数组。 $ crumbs数组只是[[title, url], [title, url]]的数组
add_filter( 'woocommerce_get_breadcrumb', function($crumbs, $Breadcrumb){
$shop_page_id = wc_get_page_id('shop');
//Get the shop page ID
if($shop_page_id >
0 &
&
!is_shop()) { //Check we got an ID (shop page is set). Added check for is_shop to prevent Home / Shop / Shop as suggested in comments
$new_breadcrumb = [
_x( 'Shop', 'breadcrumb', 'woocommerce' ), //Title
get_permalink(wc_get_page_id('shop')) // URL
];
array_splice($crumbs, 1, 0, [$new_breadcrumb]);
//Insert a new breadcrumb after the 'Home' crumb
}
return $crumbs;
}, 10, 2 );
#4我发现面包屑代码位于我的Courtour主题文件夹的header.php中, 并且该主题的作者没有为产品或产品类别页面编写代码, 因此我添加了
elseif (is_single() &
&
get_post_type() == 'product'){
$posts_page_id = get_option('page_for_posts');
$posts_page_url = get_permalink($posts_page_id);
echo '<
li>
';
$bar = "shopping";
if(get_option_tree('blog_name', '', false))
/*$bar=get_option_tree('blog_name', '', false);
*/
echo "<
a href="http://www.srcmini.com/.home_url()."/shopping/>
$bar<
/a>
<
/li>
";
echo "<
li>
";
the_title();
echo"<
/li>
";
}
和产品类别页面
if (is_tax()) {
$posts_page_id = get_option('page_for_posts');
$posts_page_url = get_permalink($posts_page_id);
echo '<
li>
';
$bar = "Shopping";
if(get_option_tree('blog_name', '', false))
echo "<
a href="http://www.srcmini.com/.home_url()."/shopping/>
$bar<
/a>
>
<
/li>
" ;
echo "<
li>
";
woocommerce_page_title();
echo"<
/li>
";
}
【woocommerce面包屑缺少商店链接】我评论了获得blog_name的行, 因为我为商店使用自定义页面, 而不是woocommerce默认页面。我不知道是否还有另一种方法可以做到这一点, 但是我注意到, 即使在小部件css中, 此主题中的大多数代码也不是真正专业的选择。
推荐阅读
- Woocomerce重新定位”按选项排序”(从低到高等)
- Woocomerce产品页面选项卡文本颜色如何更改()
- 如果我从style.css文件中更改主题名称,是否可以更新WordPress付费主题()
- 为什么wp_title过滤器根本不起作用()
- 为什么WordPress自定义代码不会在我期望的位置和时间出现()
- 为什么在wp的主题编辑器上编辑style.min.css时不起作用,但是在服务器上的文件管理器中却起作用了()
- 为什么我们不应该在wordpress多站点上使用”www”
- 为什么分页不起作用并在WordPress网站上显示404错误()
- 以太网链路聚合