【问题标题】:Removing /shop/ from WooCommerce URLs从 WooCommerce URL 中删除 /shop/
【发布时间】:2020-11-28 03:40:32
【问题描述】:

目前我有一个 WooCommerce 安装,其中产品 URL 是这样生成的:

domain.com/shop/product-category/product-name/

由于 SEO 和当前网站结构,我想将其更改为:

domain.com/product-category/product-name/

我知道如何使用 woocommerce_get_breadcrumb 过滤器从面包屑中删除商店,但我不确定如何处理 URL 本身。

我在 Stack Overflow 上发现的只是人们建议安装一个名为 Premmerce 的插件。这个插件有高级版,经常麻烦你升级:Removing /product-category/ and /shop/ from URL in WooCommerce

我想通过我自己的插件或只是 functions.php 以编程方式执行此操作

【问题讨论】:

  • 见这里 - working-out.info/…
  • 不幸的是,这个解决方案似乎会导致 URL 出现问题;它抹掉了整个事情,它也导致了 WPML 的问题。总的来说,它破坏了 URL。看来我的问题主要来自 WooCommerce 没有在自定义设置中单独启用 /%product_cat%/ 。要让事情在本地运行,走这条路可能会更好:stackoverflow.com/questions/65017217/… 此外,Premmerce 解决此问题的方法似乎是自行更新 woocommerce_permalinks 选项。

标签: php wordpress woocommerce


【解决方案1】:

如果您尝试通过 class-wc-admin-permalink-settings.php 在永久链接面板中仅输入 /%product_cat%/,WooCommerce 会强制您使用 /product/。 wc 永久链接是一个名为“woocommerce_permalinks”的选项。因为我只想拥有 /%product_cat%/,所以我可以强制它,即使它不是最优雅的解决方案:

add_action( "update_option_woocommerce_permalinks", "apply_product_cat", 10, 3 );

function apply_product_cat( $old_val, $new_val, $option_name ) {
    if ($option_name == "woocommerce_permalinks") {
        $new_val['product_base'] = "/%product_cat%/";
        update_option( "woocommerce_permalinks", $new_val );
    }
}

Premmerce 所做的实际上是为您提供另一个管理面板,他们只是在其中自行保存到此选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多