WooCommerce子分类固定链接设置:如何仅使用子分类名形式的链接?
解决WooCommerce子分类仅显示直接固定链接的问题
我来帮你搞定这个问题,要让子分类只使用store.com/childcategoryname这种直接链接,需要从固定链接设置、菜单更新和旧链接重定向这几个方面入手:
1. 修改WooCommerce产品分类的固定链接结构
首先得让系统生成的分类链接不再包含父分类路径:
- 登录WordPress后台,进入 WooCommerce → 设置 → 产品 → 固定链接 页面
- 在「产品分类基础」输入框中,删除所有内容(留空),这样产品分类的链接就会直接以分类名为路径,比如
store.com/childcategoryname - 保存设置后,一定要去 设置 → 固定链接 页面,点击「保存更改」刷新WordPress的重写规则,确保新的链接结构生效。
2. 更新导航菜单中的分类链接
之前的菜单里的分类链接还是旧的带父分类的路径,需要针对性更新:
- 如果是手动添加的菜单分类项:进入「外观 → 菜单」,删除所有旧的子分类菜单项,重新添加对应的子分类,此时生成的链接就是新的直接路径。
- 如果是动态加载的分类菜单(比如主题自带的分类导航或用
wp_list_categories调用的菜单),可以添加代码强制输出子分类的直接链接:
把下面的代码添加到主题的functions.php文件(或使用代码片段插件):
这段代码会强制所有子分类的链接输出为直接的域名/分类slug形式,忽略父分类层级。add_filter( 'term_link', 'woo_remove_parent_cat_from_child_link', 10, 3 ); function woo_remove_parent_cat_from_child_link( $termlink, $term, $taxonomy ) { if ( $taxonomy == 'product_cat' && $term->parent != 0 ) { $termlink = home_url( '/' . $term->slug . '/' ); } return $termlink; }
3. 重定向旧的带父分类的链接(避免404)
为了防止用户通过旧链接访问出现404,同时保证SEO友好,需要把store.com/parentcategoryname/childcategoryname这类旧链接301重定向到新的直接链接:
添加下面的代码到主题的functions.php或代码片段插件:
add_action( 'template_redirect', 'woo_redirect_parent_child_cat_links' ); function woo_redirect_parent_child_cat_links() { if ( is_product_category() ) { $term = get_queried_object(); if ( $term->parent != 0 ) { $correct_link = get_term_link( $term->slug, 'product_cat' ); if ( $_SERVER['REQUEST_URI'] != $correct_link ) { wp_redirect( $correct_link, 301 ); exit; } } } }
注意事项
- 操作代码前最好备份主题的
functions.php文件,或者使用专门的代码片段插件(比如Code Snippets)添加代码,避免出错导致网站崩溃。 - 每次修改固定链接或添加重定向代码后,都要刷新固定链接设置(去「设置 → 固定链接」保存一次),确保重写规则生效。
内容的提问来源于stack exchange,提问作者o2w5n778
相关产品推荐
相关产品推荐

