在 Woocommerce 产品页面中设置回产品类别

Set back to product category in Woocommerce Product Page

我想在我的产品页面上设置一个后退按钮(返回产品类别)。 我无法获取类别并在页面上回显。

我试过使用此代码,但它不起作用...

         $cats=get_the_category();
         foreach($cats as $cat){

             if($cat->category_parent == 0 && $cat->term_id != 1){
                 echo '<h2 class="link"><a href="'.get_category_link($cat->term_id ).'">Return</a></h2>';
             }
             break;
         }

我在这段代码中遇到的第一个问题是我无法为产品设置父类别。 (要是能帮我看看怎么设置就好了)

此外,即使我删除了这个 If 条件,我也没有得到任何 link。

谢谢!

看起来你的 break 语句正在打破循环,即使没有满足任何条件,所以 foreach 甚至在我们匹配之前就终止了。尝试移动休息时间;语句进入 if 条件块,如下所示:

     $cats = get_the_category();

     foreach($cats as $cat){

         if($cat->category_parent == 0 && $cat->term_id != 1){
             echo '<h2 class="link"><a href="'.get_category_link($cat->term_id ).'">Return</a></h2>';
             break; // this will stop the loop as soon as we have a match.
         }

     }

函数 get_the_category() 是为 WordPress 类别创建的,而不是为 WooCommerce 产品类别创建的,这是一个自定义分类法。 get_category_link() 也一样……

所以你应该使用 wp_get_post_terms() with an additional optional argument that will allow you to get only parent product categories. For the link you will use get_term_link() 代替:

// Get parent product categories on single product pages
$terms = wp_get_post_terms( get_the_id(), 'product_cat', array( 'include_children' => false ) );

// Get the first main product category (not a child one)
$term = reset($terms);
$term_link =  get_term_link( $term->term_id, 'product_cat' ); // The link
echo '<h2 class="link"><a href="'.$term_link.'">Return</a></h2>';

代码进入您的活动子主题(活动主题)的 function.php 文件。

已测试并有效。