我正在寻找一个功能,将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吗?
感谢阅读。
答案 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>';
再次感谢阅读,我希望这可以帮助别人。