返回

WooCommerce 中移除产品类别 slug 但保留子类别 slug,让 URL 更简洁!

php

在 WooCommerce 中移除产品类别 slug 但保留所有子类别 slug

背景

WooCommerce 提供了广泛的自定义选项,使商店所有者可以根据他们的偏好调整他们的电子商务网站的外观和功能。其中一项自定义涉及 URL 结构,它可以包括产品类别的 slug。但是,在某些情况下,移除产品类别 slug 可能是有利的。

问题陈述

当移除产品类别 slug 时,它也会影响子类别。这可能导致不必要的 URL 重定向和用户体验不佳。本指南旨在解决这一问题,同时仍然显示所有子类别 slug。

解决方案

要移除产品类别 slug 但保留子类别 slug,请执行以下步骤:

  1. 编辑 functions.php 文件: 在你的主题文件夹中找到 functions.php 文件并添加以下代码:
function remove_product_category_slug( $url ) {
    $url = str_replace( '/product-category/', '/', $url );
    return $url;
}
add_filter( 'post_type_link', 'remove_product_category_slug', 10, 2 );
  1. 添加以下代码:
function rewrite_product_category_slug() {
    add_rewrite_rule( '^/([^/]+)/([^/]+)/?', 'index.php?product_cat=$matches[1]&attachment=$matches[2]', 'top' );
}
add_action( 'init', 'rewrite_product_category_slug' );

保存你的 functions.php 文件并刷新你的网站。

示例

注意事项

  • 此方法仅适用于子类别级,不适用于孙类别或更深层级的类别。
  • 确保你的 .htaccess 文件中没有与该功能冲突的规则。
  • 如果遇到任何问题,请确保你的服务器支持重写规则。

结论

通过实施上面概述的步骤,你可以移除 WooCommerce 中的产品类别 slug,同时仍然显示所有子类别 slug。这将使你能够简化你的 URL 结构,同时保持子类别可访问性和用户友好性。

常见问题解答

  1. 移除产品类别 slug 会影响我的 SEO 吗?

答:移除产品类别 slug 对 SEO 没有直接影响。然而,它可能会影响你的内部链接结构,因此建议更新你的内部链接以反映新的 URL。

  1. 我可以使用插件来移除产品类别 slug 吗?

答:是的,有插件可以帮助你移除产品类别 slug。但是,使用自定义代码的方法提供了更大的控制和灵活性。

  1. 此方法是否适用于所有主题?

答:此方法应适用于大多数 WooCommerce 主题。但是,如果你遇到任何问题,请确保你的主题与 WooCommerce 的最新版本兼容。

  1. 我可以从子类别的 URL 中移除产品类别 slug 吗?

答:不,此方法不适用于从子类别的 URL 中移除产品类别 slug。

  1. 移除产品类别 slug 会影响我的产品页面吗?

答:不,移除产品类别 slug 不会影响你的产品页面。你的产品页面将继续可通过它们的直接 URL 访问。