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

我想根据当前类别 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]=> ....

}


繁花如伊
浏览 119回答 2
2回答

三国纷争

自 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 Objectif ( $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;}经过测试并有效。

江户川乱折腾

对我来说这段代码有效:$idCats = array_column($product_cat_related, 'term_id');
打开App,查看更多内容
随时随地看视频慕课网APP