Как получить термин по пользовательскому термину meta и таксономии или как фильтровать tax_query
по термину meta вместо slug
/ id
?
function custom_pre_get_posts($query) { global $wp_query; if ( !is_admin() && is_shop() && $query->is_main_query() && is_post_type_archive( "product" )) { $term = ???get_term_by_meta_and_taxonomy???('custom_meta_term','my_taxonomy'); $t_id = $term['term_id']; $tax_query = array ( array ( 'taxonomy' => 'my_taxoomy', 'field' => 'id', 'terms' => $t_id ) ); $query->set( 'tax_query', $tax_query ); } } add_action( 'pre_get_posts', 'custom_pre_get_posts' );
Вам нужно будет выполнить цикл каждого из условий в вашем основном запросе. Предполагая, что с пользовательскими данными, вероятно, будет более одного срока, вам необходимо передать массив идентификаторов в свой налоговый запрос.
Например, прокручивая каждый термин для проверки пользовательской мета:
$term_args = array( 'taxonomy' => $taxonomy_name, ); $terms = get_terms( $term_args ); $term_ids = array(); foreach( $terms as $term ) { $key = get_term_meta( $term->ID, 'meta_key', true ); if( $key == 'meta_value' ) { // push the ID into the array $term_ids[] = $term->ID; } }
Затем вы получаете переменную $ term_ids, которая содержит массив идентификаторов терминов, которые вы ищете. Вы можете передать это в свой налоговый запрос.
Попробуй это:
$args = array( 'hide_empty' => false, // also retrieve terms which are not used yet 'meta_query' => array( array( 'key' => 'feature-group', 'value' => 'kitchen', 'compare' => 'LIKE' ) ) ); $terms = get_terms( 'category', $args );