Помощь со связанными функциями сообщений

Я пытаюсь написать функцию, которая будет захватывать все связанные должности в соответствии с термином таксономии. У меня возникают проблемы, пытаясь запросить несколько терминов.

То, как я делаю это прямо сейчас, использует то, что первый термин предназначен для запроса соответствующих сообщений. Любая идея, как проверить, является ли он кратным?

function related_posts($related_type, $related_tax) { global $wpdb, $post; // Get The Related Term $terms = array(); foreach(wp_get_object_terms($post->ID, $related_tax) as $term){ $terms[] = $term->slug; }; // Grab The First Term From The Array $related_term = array_shift(array_values($terms)); // Query The Related Posts $related_posts = $wpdb->get_results( " SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) WHERE $wpdb->posts.post_type = '$related_type' AND $wpdb->posts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy = '$related_tax' AND $wpdb->terms.slug = '$related_term' AND $wpdb->posts.ID <> $post->ID ORDER BY $wpdb->posts.post_date DESC " ); if($related_posts) { echo '<ul>'; foreach ($related_posts as $post):setup_postdata($post); echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>'; endforeach; echo '</ul>'; } else { echo 'No related posts found'; } } 

Мне хотелось бы что-то вроде: если этот термин ИЛИ этот термин ИЛИ этот термин THEN отображает все связанные должности.

Раньше я использовал $ wpdb-> terms.slug IN ('$ terms'), но это только показывало бы соответствующие сообщения с этим точным соответствием.

Solutions Collecting From Web of "Помощь со связанными функциями сообщений"

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

 $query = array( 'post_type' => $YOUR_POST_TYPE, 'posts_per_page' => -1 // get all 'tax_query' => array( 'relation' => 'OR' ) ); $query['tax_query'][] = array( 'taxonomy' => 'YOUR_TAXONOMY', 'terms' => $ARRAY_WITH_TERMS, 'field' => 'ID', 'operator' => 'IN' $query['tax_query'][] = array( 'taxonomy' => 'YOUR_TAXONOMY_2', 'terms' => $ARRAY_WITH_TERMS_2, 'field' => 'ID', 'operator' => 'IN' $posts = query_posts( $query ); 

Возможно, это то, что вы ищете?