get_cat_ID() not wokring

时间:2020-04-05 作者:Wei

我正在函数中编写一个函数。php。我与woocommerce合作,试图在单个产品页面上获得与product\\u cat同名的帖子。我的想法是使用猫名woocommerce cat和get\\u cat\\u ID()来获取类别ID,然后使用WP\\u query来获取帖子。但是,get\\u cat\\u ID()始终返回0(我创建了一个名为“test”的类别,但仍然如此)。试图用谷歌搜索问题,但没有解决方案。get\\u cat\\u ID()似乎非常简单,所以我真的不确定出了什么问题。如果有人能告诉我可能的原因,那就太好了。

总结一下我的问题:我有一个名为“test”的product\\u cat。现在,我想获取具有相同名称“test”的类别的ID。

代码如下:

$cate_object = get_the_terms( $post->ID, \'product_cat\' );
foreach( $cate_object as $cate ){
    // get cat id by tax name
    $thisCatName = $cate->name;
    $thisCatID = get_cat_ID($thisCatName);
    if($thisCat !== null && $thisCat != 0)
        $cat_array[] = $thisCatID;
}
谢谢!

2 个回复
最合适的回答,由SO网友:Wei 整理而成

对于有同样问题的人:我认为问题是由Polylang引起的。我检查了仪表板上的类别列表,发现我用get\\u cat\\u ID()无法获取的类别不属于任何语言(这很奇怪)。我创建了一个测试类别,并为其指定了一种语言,然后get\\u cat\\u ID()就可以了!

感谢那些试图帮忙的人!

SO网友:Jacob Peattie

get_cat_ID 基于名称获取类别的ID。“类别”是一种特定的分类法,名为category. 您正在尝试获取产品类别的ID(product_cat). 您不能使用get_cat_ID() 获取自定义分类的ID。

要做到这一点,您需要使用get_term_by():

$product_cat = get_term_by( \'name\', $cat_name, \'product_cat\' );

if ( $product_cat ) {
    $thisCatID = $product_cat->term_id;
}
但是,根据您的代码,您不需要查找ID。您已经有了ID:

$cate_object = get_the_terms( $post->ID, \'product_cat\' );
foreach( $cate_object as $cate ){
    $thisCatID = $cate->term_id; // This is the ID.

    $cat_array[] = $thisCatID;
}