

新闻资讯
技术学院本文介绍在 wordpress 中通过 php 判断当前请求 url 是否包含 `/product-category/` 路径,并自动 301 重定向至 `/shop` 页面的完整实现方案,兼顾兼容性与安全性。
在 WordPress 开发中,有时需要根据 URL 路径中的特定关键词(如 product-category)触发重定向逻辑。例如,将所有形如 https://www.mysite.com/product-category/xxx 或 https://www.mysite.com/product-category/ 的请求统一跳转至 https://www.mysite.com/shop。虽然上述答案提供了基础思路,但存在明显缺陷:手动拼接 URL 易出错、未处理协议/端口边界情况、in_array() 误判(如 /my-product-category/ 也会被匹配)、且在 header.php 中执行重定向易导致“headers already sent”错误。
✅ 推荐做法:在主题的 functions.php 中使用 WordPress 原生钩子 template_redirect 安全执行重定向:
// 将以下代码添加到主题 functions.php 文件末尾(确保在 PHP 标签内)
function redirect_product_category_to_shop() {
// 获取当前请求的路径部分(不含域名和查询参数),更精准可靠
$request_uri = trim( $_SERVER['REQUEST_URI'] ?? '', '/' );
// 使用前缀匹配,避免误触(如 'my-product-category' 不会被匹配)
if ( s
trpos( $request_uri, 'product-category' ) === 0 ) {
$redirect_url = home_url( '/shop/' ); // 自动适配 HTTP/HTTPS 和站点地址
wp_redirect( $redirect_url, 301 );
exit;
}
}
add_action( 'template_redirect', 'redirect_product_category_to_shop' );? 关键说明:
⚠️ 注意事项:
此方案简洁、健壮、符合 WordPress 最佳实践,适用于任何基于标准 WordPress 路由机制的主题。