企业网站模板

为WooCommerce中的自定义产品类型设置单独的 Slug

作者 WooCommerce 2021-07-12 176

WooCommerce中,所有文章类型的URL都有唯一的前缀目录,默认为「product」,我们可以在固定链接设置中修改这个前缀为我们想要字符。但是如果想为某个产品类型设置单独的前缀,就没办法通过后台进行设置了。

如果想实现这个功能,我们需要换种思路,为某个产品类型添加一个单独的URL重写规则,然后通过 the_permalink Filter 修改这个产品类型的固定链接URL,最后再屏蔽该文章类型默认的URL,就可以实现这个功能了。

为自定义产品类型添加新的URL重写规则

这一步没什么好说的,直接使用 add_rewrite_rule 函数添加一条新的URL重写规则就可以了。添加下面的代码之后,通过 「books」这个前缀和通过默认的「product」前缀都能正确访问到每一个商品。

1
2
3
4
5
6
7
8
9
10
add_action('init', function ()
{
    add_rewrite_rule(
        '^books/([^/]*)/?',
        'index.php?product=$matches[1]',
        'top'
    );
 
    flush_rewrite_rules();
});

修改自定义产品类型的固定链接

上一步中,我们实现了自定义产品 URL 前缀,这一步,我们需要修改产品固定链接,让产品类型「books」的固定链接前缀为我们需要的字符。下面的代码中,我们在输出固定链接的时候,先判断一下产品类型,如果是「books」,我们替换URL中的 product 为 Books,否则原样返回。

1
2
3
4
5
6
7
8
9
10
add_filter('the_permalink', function ($link, $post)
{
    global $product;
 
    if ($product && $product->is_type('books')) {
        $link = str_replace('/product/', '/books/', $link);
    }
 
    return $link;
}, 10, 2);

实现这个功能会导致一个产品有两个网址,如果两个网站同时出现在前端,对SEO来说,可能会出现重复内容的问题,如果是正常的在前端访问,books 类型的商品链接不会显示为默认的 prodcut 链接,除非手动粘贴默认链接在文章中,这一点稍微注意一下即可。

点击【分享给朋友】生成专属代理二维码,享受推广消费现金奖励!

发表评论

好哇网,累计帮助1000+用户成功建站,为小微企业提供助力!

立刻开启你的建站之旅

留言咨询

现在加入好哇网,注册一个账号