【问题标题】:Custom WooCommerce rewrite URL自定义 WooCommerce 重写 URL
【发布时间】:2020-09-03 07:10:39
【问题描述】:

目前,产品 URL 如下所示:

例如

可以改成

例如

我以某种方式设法获得了上述 URL 结构,但看到 404 错误。


我正在为市场使用https://wordpress.org/plugins/dc-woocommerce-multi-vendor/ 插件。

该网站正在开发中,因此您将无法看到上述链接。请提出解决方案。提前致谢。

【问题讨论】:

  • "..我以某种方式设法获得了上述 URL 结构,但看到 404 错误..".你能在你的问题中阐明这一点吗?
  • 好的,请查看这里的代码codeshare.io/ax4jBL(链接24小时后失效)
  • 我删除了我的答案,因为我认为它没有帮助。我认为如果您想将 URL 结构组织为供应商/产品/,您需要创建供应商帖子类型,然后让产品成为该帖子类型中的帖子。或者,您可以将供应商创建为类别,以便它们始终获得前缀。但是为了管理员的理智,将供应商组织为单独的帖子类型会更有意义。如果您有太多供应商,那么您最好的解决方案是查看 Wordpress 多站点解决方案,其中每个供应商都是他们自己的站点和商店。

标签: wordpress woocommerce url-rewriting


【解决方案1】:

设法将分类名称推送到产品 URL 中。步骤如下: 1) 将 Product permalinks 下的 Custom Base 设置为“/%product_brand%/”

2) 编辑产品并创建/设置产品品牌(您希望在 url 中显示)。我使用 WCMP 供应商名称来保持同步和易于理解。

3) 将以下代码添加到functions.php中

function dab_prefix_filter_vendor_permalink( $post_link, $post, $leavename, $sample ) {
    if('product' == get_post_type($post->ID)){
        $brands = wp_get_post_terms($post->ID, "product_brand", array("fields" => "all"));
        if(!empty($brands) && false !== strpos($post_link, '%product_brand%')){
            $post_link = str_replace('%product_brand%', $brands[0]->slug, $post_link);
        }else{
            $post_link = str_replace('%product_brand%/', '', $post_link);
        }
    }
    return $post_link;
}
add_filter( 'post_type_link', 'dab_prefix_filter_vendor_permalink', 10, 4 );

注意:我添加了一个例外来显示产品,而不是 url 中的 %product_brand%,以防品牌未分配。

编码愉快!

【讨论】:

  • 你也可以在下面使用:if('product' == get_post_type($post->ID)){ $vendor_id = get_post_field('post_author', $post->ID); $_vendor_page_slug = get_user_meta($vendor_id, '_vendor_page_slug', true); $post_link = str_replace('%product_brand%', $_vendor_page_slug, $post_link); } return $post_link;
猜你喜欢
  • 2018-08-14
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多