WooCommerce:从 Yoast 面包屑中删除 "Products" 存档
WooCommerce: Remove "Products" archive from Yoast breadcrumbs
我想删除 link 到所有页面面包屑中的产品存档。
为此,我在 Yoast 文档中找到了解决方案。除了在产品页面上,它工作正常。
这是我当前的代码:
/* Remove "Products" from Yoast SEO breadcrumbs in WooCommerce */
add_filter( 'wpseo_breadcrumb_links', function( $links ) {
// Check if we're on a WooCommerce page
// Checks if key 'ptarchive' is set
// Checks if 'product' is the value of the key 'ptarchive', in position 1 in the links array
if ( is_woocommerce() && isset( $links[1]['ptarchive'] ) && 'product' === $links[1]['ptarchive'] ) {
// True, remove 'Products' archive from breadcrumb links
unset( $links[1] );
// Added by me to remove it on product single pages - doesn't work!
} elseif ( is_product() && isset( $links[1]['ptarchive'] ) && 'product' === $links[1]['ptarchive'] ) {
// True, remove 'Products' archive from breadcrumb links
unset( $links[1] );
}
// Rebase array keys
$links = array_values( $links );
// Return modified array
return $links;
});
它删除了存档页面和所有其他 WooCommerce 页面上的 link,正如您所期望的条件标签 is_woocommerce()
。
但由于某些原因,它在单个产品页面上不起作用。
如您所见,如果我在带有 is_product()
的产品页面上,我会添加额外的检查。不幸的是,这不起作用。 is_singular('proudct')
也别担心。
也许 $links
数组有问题?
但我不确定如何检查。
我将 if 条件更改为:
if ( is_product() ) {
// True, remove 'Products' archive from breadcrumb links
unset( $links[1] );
}
现在可以了。其他页面之前没有这个功能也能正常工作。
您还可以删除商店页面上的 'shop' 或 'products' 链接,方法是添加“||” is_archive() ' 条件如下:
if ( is_product() || is_archive() ) {
// True, remove 'Products' archive from breadcrumb links
unset( $links[1] );
}
我想删除 link 到所有页面面包屑中的产品存档。
为此,我在 Yoast 文档中找到了解决方案。除了在产品页面上,它工作正常。 这是我当前的代码:
/* Remove "Products" from Yoast SEO breadcrumbs in WooCommerce */
add_filter( 'wpseo_breadcrumb_links', function( $links ) {
// Check if we're on a WooCommerce page
// Checks if key 'ptarchive' is set
// Checks if 'product' is the value of the key 'ptarchive', in position 1 in the links array
if ( is_woocommerce() && isset( $links[1]['ptarchive'] ) && 'product' === $links[1]['ptarchive'] ) {
// True, remove 'Products' archive from breadcrumb links
unset( $links[1] );
// Added by me to remove it on product single pages - doesn't work!
} elseif ( is_product() && isset( $links[1]['ptarchive'] ) && 'product' === $links[1]['ptarchive'] ) {
// True, remove 'Products' archive from breadcrumb links
unset( $links[1] );
}
// Rebase array keys
$links = array_values( $links );
// Return modified array
return $links;
});
它删除了存档页面和所有其他 WooCommerce 页面上的 link,正如您所期望的条件标签 is_woocommerce()
。
但由于某些原因,它在单个产品页面上不起作用。
如您所见,如果我在带有 is_product()
的产品页面上,我会添加额外的检查。不幸的是,这不起作用。 is_singular('proudct')
也别担心。
也许 $links
数组有问题?
但我不确定如何检查。
我将 if 条件更改为:
if ( is_product() ) {
// True, remove 'Products' archive from breadcrumb links
unset( $links[1] );
}
现在可以了。其他页面之前没有这个功能也能正常工作。
您还可以删除商店页面上的 'shop' 或 'products' 链接,方法是添加“||” is_archive() ' 条件如下:
if ( is_product() || is_archive() ) {
// True, remove 'Products' archive from breadcrumb links
unset( $links[1] );
}