您所在位置:
WooCommerce: 重定向空分页类别页面 (404)
在管理 WooCommerce 商店时,通常会重新排列产品或从某些类别中删除产品。然而,这可能会导致一个意想不到的问题:即使特定页面不再包含任何产品,分页的产品类别 URL(例如,/product-category/shirts/page/3/)仍可访问。
与其显示 404 错误,不如将用户重定向回主分类页面,以避免混乱并改善用户体验。
这对搜索引擎优化尤为重要,因为你不希望搜索引擎索引到不相关或已损坏的页面。解决方法是检测分页的产品类别存档是否为空或无效,然后重定向到基本类别 URL。
下面是一个简单的代码段,您可以添加到主题的 functions.php 或自定义插件中。它只在必要时处理重定向,确保用户和机器人访问有意义的内容。

PHP 代码段: 将空的、分页的分类页面重定向到 WooCommerce 产品分类主页面
此代码段与 template_redirect 操作挂钩,以捕捉类似于分页产品类别 URL 的 404 页面。
它首先会从永久链接设置中检索 WooCommerce 产品类别的基本标题,使其与自定义或翻译的标题兼容。
然后,它会检查当前请求是否与分页类别页面的模式相匹配。如果是,它会从 URL 中提取类别标题,确认类别存在,并安全地将用户重定向到主类别页面。
这可防止访问者和搜索引擎在产品从该类别移除后遇到空的或断开的分页 URL。
add_action( 'template_redirect', 'bbloomer_redirect_empty_product_cat_pagination' ); function bbloomer_redirect_empty_product_cat_pagination() { if ( is_404() ) { $requested_url = $_SERVER['REQUEST_URI']; $permalinks = wc_get_permalink_structure(); if ( preg_match( '#^/' . $permalinks['category_rewrite_slug'] . '/[^/]+/page/\d+/?#', $requested_url ) ) { preg_match( '#/' . $permalinks['category_rewrite_slug'] . '/([^/]+)/#', $requested_url, $matches ); if ( isset( $matches[1] ) ) { $term = get_term_by( 'slug', $matches[1], 'product_cat' ); if ( $term && ! is_wp_error( $term ) ) { wp_safe_redirect( get_term_link( $term ) ); exit; } } } } }