Встроенный в WordPress метод извлечения массива идентификаторов терминов?
Я запрашиваю пользовательскую таксономию для публикации, надеясь получить список всех терминов для этой публикации и таксономии. get_the_terms($post_id, $taxonomy)
работает, но дает этот безбожный массив объектов терминов, для которого потребуется дополнительный уровень синтаксического анализа, прежде чем я смогу запустить следующий код:
if (in_array($list_of_term_ids, $my_term_id)){ do good stuff... }
Я ищу, не сталкивался ли кто-нибудь с собственной функцией WP или методом, который извлекает идентификаторы терминов в плоский список, прежде чем запускать мою собственную служебную функцию, просто чтобы я мог использовать встроенную лучшие практики.
2 answers
Я знаю, что вы уже давно решили эту проблему, но хотели предложить другое решение. Этот вопрос возник как "связанный", когда я отвечал на другой.
Вы можете использовать функцию WordPress wp_list_pluck
для возврата массива со значениями в качестве одного из полей массива или объектов, отправленных в функцию. Другими словами, отправьте функции объекты и укажите поле, которое вы хотите вернуть, и вы получите массив только с этим полем.
Например, вы можете что-то сделать например:
$ids = wp_list_pluck(get_terms('category', 'hide_empty=0'), 'term_id'));
$ids
будет массив идентификаторов терминов, которые вы хотели захватить.
Ну, я видел это и был сбит с толку первым аргументом, но он делает именно то, что нужно. От 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'));