Obtener término por meta término personalizado y taxonomía

2

¿Cómo obtener un término por meta personalizada y taxonomía o cómo filtrar tax_query por término meta en su lugar 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' );
    
pregunta Sevi 01.07.2016 - 18:18

3 respuestas

3

Prueba esto:

$args = array(
'hide_empty' => false, // also retrieve terms which are not used yet
'meta_query' => array(
    array(
       'key'       => 'feature-group',
       'value'     => 'kitchen',
       'compare'   => 'LIKE'
    )
),
'taxonomy'  => 'category',
);
$terms = get_terms( $args );
    
respondido por el Ahmed Ali 05.09.2017 - 12:45
1

Tendrá que recorrer cada uno de los términos en su consulta principal condicional. Suponiendo que probablemente haya más de un término con los datos personalizados, entonces deberá pasar una serie de ID en su consulta de impuestos.

Por ejemplo, repitiendo cada término para verificar meta personalizada:

$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;
    }
}

Luego terminas con la variable $ term_ids que contiene una matriz del término ID que estás buscando. Puede pasar eso a su consulta de impuestos.

    
respondido por el edwardr 02.07.2016 - 07:21
1

Basándose en la respuesta de ilgıt- yıldırım arriba, tanto la instrucción get_term_meta como las declaraciones $key == 'meta_value' deben contener $term>term_id .

Aquí hay un ejemplo completo que incluye la solicitud personalizada $wp_query :

$term_args = array( 'taxonomy' => 'your-taxonomy' );
$terms = get_terms( $term_args );

$term_ids = array();

foreach( $terms as $term ) {
    $key = get_term_meta( $term->term_id, 'term-meta-key', true );

    if( $key == 'term-meta-value' ) {
        // push the ID into the array
        $term_ids[] = $term->term_id;
    }
}

// Loop Args
$args = array(
'post_type' => 'posts',
'tax_query' => array(
    array(
        'taxonomy' => 'your-taxonomy',
        'terms'    => $term_ids,
         ),
    ),
);

// The Query
$featured = new WP_Query( $args );
    
respondido por el Steven Ryan 26.10.2018 - 20:51

Lea otras preguntas en las etiquetas