如何移除WooCommerce商品链接中的"product" slug?
移除WooCommerce商品URL中的"product" Slug是否可行?
Hey,当然可行!我帮不少WooCommerce店铺运营者搞定过这个需求,下面给你两种实操方案,按需选择就行:
方案一:用插件(零代码,新手友好)
如果你不想碰代码,用一款叫Permalink Manager Lite的免费插件就能轻松搞定:
- 安装并启用插件后,进入WordPress后台的「Settings → Permalink Manager」
- 切换到「WooCommerce」标签页,找到「Product permalink」的自定义规则
- 把默认的
/product/%product%/改成/%product%/,保存设置 - 最后一定要去「Settings → Permalinks」页面,随便切换一个固定链接结构再切回来保存,刷新WordPress的重写规则,避免出现404问题
方案二:自定义代码(无插件依赖,适合有一定技术基础的用户)
如果你不想额外安装插件,可以在主题的functions.php文件(推荐用子主题的functions.php,避免主题更新丢失代码)里添加以下代码:
// 移除商品URL中的product slug function remove_product_slug( $post_link, $post, $leavename ) { if ( 'product' != $post->post_type || 'publish' != $post->post_status ) { return $post_link; } $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); return $post_link; } add_filter( 'post_type_link', 'remove_product_slug', 10, 3 ); // 修复移除slug后可能出现的404问题 function parse_request_trick( $query ) { if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) { return; } if ( ! empty( $query->query['name'] ) ) { $query->set( 'post_type', array( 'post', 'product', 'page' ) ); } } add_action( 'pre_get_posts', 'parse_request_trick' );
添加完代码后,同样要去「Settings → Permalinks」页面刷新重写规则。
重要注意事项
- 确保你的商品slug和现有文章、页面的slug没有重复,否则会出现访问冲突(比如一个页面和一个商品slug都是
shirt,只会显示其中一个) - 如果之后遇到404问题,优先检查重写规则是否刷新,或者是否存在slug冲突
内容的提问来源于stack exchange,提问作者Dr.MTR
相关产品推荐
相关产品推荐

