为了账号安全,请及时绑定邮箱和手机立即绑定

从 WooCommerce 中的当前产品类别获取同级术语 ID 列表

从 WooCommerce 中的当前产品类别获取同级术语 ID 列表

PHP
繁花如伊 2023-12-15 15:06:58
我想根据当前类别 ID 检索术语 ID 列表。目前我正在使用以下代码:$product_cat_items  = get_queried_object();$product_cat_id     = $product_cat_items->term_id;$product_cat_child  = get_term($product_cat_id, 'product_cat');$product_cat_parent = $product_cat_child->parent;$product_cat_related= get_terms('product_cat', array( 'parent' => $product_cat_parent, 'exclude' => $product_cat_id ));它正在工作,我得到了一系列术语。 但问题是,我只需要术语对象中的 ID 即可获取如下列表:123,345,678有没有办法从$product_cat_related数组中提取这样的列表?这是当前的输出:array(2) {  [0]=>  object(WP_Term)#26238 (10) {    ["term_id"]=>    int(177)    ["name"]=>    string(27) "Name"    ["slug"]=>    string(21) "name"    ["term_group"]=>    int(0)    ["term_taxonomy_id"]=>    int(177)    ["taxonomy"]=>    string(11) "product_cat"    ["description"]=>    string(0) ""    ["parent"]=>    int(140)    ["count"]=>    int(8)    ["filter"]=>    string(3) "raw"  }  [1]=> ....}
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

自 WordPress 4.5.0 版起,分类法应通过“taxonomy”传递$args 数组中的参数
另外,当查询的对象是分类术语时,get_queried_object() 已经给出了WP_Term 对象。
您还可以使用 'fields' => 'ids' 作为 get_terms() 中的参数,以仅获取 term Ids 数组 而不是 WP_term 对象数组 
最后,您将使用 PHP implode() 获取一串逗号分隔的术语 ID。

所以你的代码将是:

$current_term = get_queried_object(); // Already a WP_Term Object


if ( $current_term->parent > 0 ) {

    $siblings_ids = get_terms( array(

        'taxonomy'  => 'product_cat',

        'parent'    => $current_term->parent,

        'exclude'   => $current_term->term_id,

        'fields'    => 'ids',

    ) );


    // Get a string of coma separated terms Ids

    $siblings_list_ids = implode(',', $siblings_ids);


    // Testing output

    echo $siblings_list_ids;

}

经过测试并有效。


查看完整回答
反对 回复 2023-12-15
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

对我来说这段代码有效:

$idCats = array_column($product_cat_related, 'term_id');


查看完整回答
反对 回复 2023-12-15
  • 2 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信