在WordPress中实现WooCommerce Shop页复用首页内容并配置规范URL
实现WordPress首页与WooCommerce Shop页面内容复用及规范URL设置
你的需求是让首页(https://lullyandrose.com.au/)和Shop页面(https://lullyandrose.com.au/shop)显示同一内容,同时通过link rel="canonical"避免重复内容的SEO问题,但你之前添加的代码逻辑有误,导致未生效。以下是正确的解决方案:
问题分析
你之前的代码存在两个关键问题:
return $redirect_url == '/';返回的是布尔值,而redirect_canonical过滤器需要返回具体的重定向URL或false来阻止重定向,逻辑不符合要求。- 直接判断完整的
$requested_url容易出现匹配失败(比如HTTP/HTTPS、带www和不带www的差异),不如用WooCommerce自带的is_shop()条件函数可靠。
正确代码实现
将以下两段代码添加到你的主题functions.php文件(或使用自定义代码插件,比如Code Snippets,避免主题更新丢失代码):
1. 阻止Shop页面的自动规范重定向
add_filter( 'redirect_canonical', 'disable_shop_canonical_redirect', 10, 2 ); function disable_shop_canonical_redirect( $redirect_url, $requested_url ) { // 检测当前是否为Shop页面 if ( is_shop() ) { // 返回false,阻止WordPress自动重定向到其他URL return false; } return $redirect_url; }
2. 给Shop页面添加指向首页的Canonical标签
add_action( 'wp_head', 'add_shop_canonical_to_home' ); function add_shop_canonical_to_home() { if ( is_shop() ) { // 获取首页的规范URL $home_canonical = get_home_url(); // 输出Canonical标签,确保URL转义安全 echo '<link rel="canonical" href="' . esc_url( $home_canonical ) . '" />'; } }
效果说明
添加代码后:
- 访问
/shop时不会被重定向到首页,而是直接显示首页的内容。 - Shop页面的
<head>中会自动添加指向首页的canonical标签,告诉搜索引擎两个页面属于同一内容,避免重复内容导致的SEO降权。
内容的提问来源于stack exchange,提问作者Chrissa
相关产品推荐
相关产品推荐

