Встроенный в WordPress метод извлечения массива идентификаторов терминов?


Я запрашиваю пользовательскую таксономию для публикации, надеясь получить список всех терминов для этой публикации и таксономии. get_the_terms($post_id, $taxonomy) работает, но дает этот безбожный массив объектов терминов, для которого потребуется дополнительный уровень синтаксического анализа, прежде чем я смогу запустить следующий код:

if (in_array($list_of_term_ids, $my_term_id)){ do good stuff... }

Я ищу, не сталкивался ли кто-нибудь с собственной функцией WP или методом, который извлекает идентификаторы терминов в плоский список, прежде чем запускать мою собственную служебную функцию, просто чтобы я мог использовать встроенную лучшие практики.

Author: Sisir, 2011-06-09

2 answers

Я знаю, что вы уже давно решили эту проблему, но хотели предложить другое решение. Этот вопрос возник как "связанный", когда я отвечал на другой.

Вы можете использовать функцию WordPress wp_list_pluck для возврата массива со значениями в качестве одного из полей массива или объектов, отправленных в функцию. Другими словами, отправьте функции объекты и укажите поле, которое вы хотите вернуть, и вы получите массив только с этим полем.

Например, вы можете что-то сделать например:

$ids = wp_list_pluck(get_terms('category', 'hide_empty=0'), 'term_id'));

$ids будет массив идентификаторов терминов, которые вы хотели захватить.

 5
Author: tollmanz, 2011-08-20 23:00:30

Ну, я видел это и был сбит с толку первым аргументом, но он делает именно то, что нужно. От wp-includes/taxonomy.php :

function wp_get_object_terms($object_ids, $taxonomies, $args = array())

И чтобы использовать его так, как я хотел, предоставив мне плоский список совпадающих идентификаторов, вставьте "поля"=> "идентификаторы" в $args, вот так:

wp_get_object_terms($post_id, TAXONOMY_NAME, array('fields'=>'ids'));

 0
Author: Tom Auger, 2011-06-09 21:41:26