Получение сообщений по таксономии

Я хочу получить набор сообщений от CPT на основе присутствующего таксономического термина. Я думал, что буду использовать функцию get_posts () WP:

$ results = get_posts (параметры массива $);

Эта функция отлично работает, когда я указываю интересующий CPT:

$ results = get_posts (array ('post_type' => 'my_cpt_name'));

Но затем я попробовал это со своим типом пользовательского сообщения UOM и попытался отфильтровать метрическую систему, которая является таксономией под названием «uom_system»:

$ results = get_posts (array ('post_type' => 'uoms', 'uom_system' => 'метрическая система');

К сожалению, раздел таксономии игнорируется, и я получаю полный список сообщений в таблице сообщений UOM. Что я делаю не так?

Solutions Collecting From Web of "Получение сообщений по таксономии"

Обычно я использую параметр tax_query :

 $args = array( 'post_type' => 'my_cpt_name', 'post_status' => 'publish', 'posts_per_page' => -1, 'tax_query' => array( array( 'taxonomy' => 'uom_system', 'field' => 'slug', 'terms' => 'metric-system' ) ) ); $results = get_posts( $args ); 

См. http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

Я решил свою собственную проблему, осознав, что массив, который я передавал в get_posts, имел несколько пар имя-значение, которые не были предназначены для этой функции (ака, я использовал его в широком смысле для представления «опций», для которых только некоторые из этих параметров были для вызов get_posts). Похоже, что вместо игнорирования значений, которые он не понимает, он перестает обрабатывать дальнейшие пары имя-значение. Справедливо. Я удалил пары имя-значение мусора, и теперь он отлично работает.

Мне понравился вклад Саймона в «tax_query» … Я не знал об этом варианте, и я вижу, что это может быть лучше синтаксис при определенных обстоятельствах.