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

WooCommerce中,所有文章类型的URL都有唯一的前缀目录,默认为「product」,我们可以在固定链接…

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

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

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

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

 add_action('init', function ()
{
    add_rewrite_rule(
        '^books/([^/]*)/?',
        'index.php?product=$matches[1]',
        'top'
    );

    flush_rewrite_rules();
});

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

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

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 链接,除非手动粘贴默认链接在文章中,这一点稍微注意一下即可。

类别:WordPress 教程精选

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册