I want to retrieve a list of term Ids based on the current category ID.
At the moment I’m using the following code:
$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 ));
It’s working and I get an array of the terms. But the probem is, that I only need the IDs from the term object to get a list like this:
123,345,678
Is there any way to extract such a list from the $product_cat_related
array?
This is the current output:
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]=> .... }
Advertisement
Answer
Since WordPress version 4.5.0, taxonomies should be passed via the “taxonomy” argument in the $args
array (see get_terms()
documentation).
Also get_queried_object()
already gives a WP_Term
Object when the queried Object is a taxonomy term.
Also you can use 'fields' => 'ids'
as an argument in get_terms()
, to get only an array of term Ids instead of an array of WP_term
Objects (see WP_Term_Query
available arguments).
To finish, you will use PHP implode()
to get a string of coma separated terms Ids.
So your code will be instead:
$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; }
Tested and works.