将Woocommerce类别ID转换为slug功能

时间:2015-09-02 14:11:03

标签: php wordpress woocommerce

我正在寻找一个功能,将woocommerce类别ID转换为面包屑链接的类别slug。

以下循环提取产品页面的最高产品类别ID。这是必要的,因为我的一些产品有4级或5级的层次结构。

这很好用。

$prod_terms = get_the_terms( $post->ID, 'product_cat' );

    foreach ($prod_terms as $prod_term) {

        // gets product cat id
        $product_cat_id = $prod_term->term_id;

        // gets an array of all parent category levels
        $product_parent_categories_all_hierachy = get_ancestors( $product_cat_id, 'product_cat' );  

        // This cuts the array and extracts the last set in the array
        $last_parent_cat = array_slice($product_parent_categories_all_hierachy, -1, 1, true);
        foreach($last_parent_cat as $last_parent_cat_value){
     }
    }  

此时echo $last_parent_cat_value;会为您提供最高类别的ID。

为了将其转换为面包屑链接,我需要提取类别名称。所以...

        // This function turns Category Ids produced by the foreach loop above into Names
        function woocommerceCategoryName($id){
            $term = get_term( $id, 'product_cat' );
            return $term->name;        
        }

现在我需要的只是完成链接的slu ..所以...

        //this function gets the category slug from the category id
        function get_cat_slug($cat_id) {
            $cat_id = (int) $cat_id;
            $category = &get_category($cat_id);
            return $category->slug;
        }

但是当我echo

echo '<a href="' . home_url() . '/product-category/' . get_cat_slug($last_parent_cat_value) . '/">' . woocommerceCategoryName($last_parent_cat_value) . '</a>';

我的名字功能正常,但我的slug功能不正常。

任何人都可以为我的错误发光吗?

当前端的inspect element是我生成的html ...

<a href="http://home.com/product-category//">Sports</a>

我可以尝试使用Name来生成slug吗?

感谢阅读。

1 个答案:

答案 0 :(得分:0)

好吧,我不确定上面的原因是什么,或者下面的原因是什么。

//I copied the function to generate the name, and generated a slug instead...
function woocommerceCategorySlug($id){
            $term = get_term( $id, 'product_cat' );
            return $term->slug;        
        }


echo '<a href="' . home_url() . '/product-category/' . woocommerceCategorySlug($last_parent_cat_value) . '/">' . woocommerceCategoryName($last_parent_cat_value) . '</a>';

再次感谢阅读,我希望这可以帮助别人。