es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WordPress: obtener todas las publicaciones incluidas en dos taxonomías (relación AND en WP_Query tax_query)

Por supuesto, esto puede considerarse un duplicado, pero no puedo vencer esta tarea de ninguna manera, solo estoy aprendiendo)

Hay varias taxonomías, por ejemplo, location y set. Necesito mostrar el número de publicaciones incluidas en ambas taxonomías. Mi función se ve así:

function get_all_property_count($id, $setid)
{

$count = new WP_Query(array(
    'nopaging' => true,
    'post_type' => 'property',
    'post_status' => 'publish',
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy'          => 'location',
            'field'             => 'id',
            'fields'            => 'ids',
            'terms'             => $id,
        ),
        array(
            'relation' => 'AND',
            array(
                'taxonomy'          => 'set',
                'field'             => 'id',
                'fields'            => 'ids',
                'terms'             => $setid,
                'include_children'  => true,
            )
        )
    ),
));
return $count->post_count;
}

Luego lo utilizo para obtener un contador de publicaciones publicadas en la taxonomía actual y otra por id (no estoy seguro de si lo estoy explicando correctamente).

<div class="count_property">
    <div class="sell">
        <span class="strong">Sell:</span> <?php echo get_all_property_count($term->term_id, 30); ?>
    </div>
    <div class="rent">
        <span class="strong">Rent:</span> <?php echo get_all_property_count($term->term_id, 31); ?>
    </div>
</div>

Donde $term->term_id, es el ID de categoría de la taxonomía location. 30 y 31 son las categorías de venta y alquiler de la taxonomía set.

Al obtener el resultado, obtengo uno más en “sell”. Por ejemplo, “Sell: 2” (aunque debería ser 0 en general), “Rent: 1” (eso está bien).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el número de publicaciones incluidas en ambas taxonomías, debes modificar la función get_all_property_count cambiando el parámetro relation en la consulta de impuestos de OR a AND. Esto asegurará que solo se incluyan las publicaciones que tengan ambas taxonomías. La función modificada se vería así:

    function get_all_property_count($id, $setid)
    {
    
        $count = new WP_Query(array(
            'nopaging' => true,
            'post_type' => 'property',
            'post_status' => 'publish',
            'tax_query' => array(
                'relation' => 'AND', // cambia OR a AND
                array(
                    'taxonomy' => 'location',
                    'field' => 'id',
                    'fields' => 'ids',
                    'terms' => $id,
                ),
                array(
                    'relation' => 'AND',
                    array(
                        'taxonomy' => 'set',
                        'field' => 'id',
                        'fields' => 'ids',
                        'terms' => $setid,
                        'include_children' => true,
                    )
                )
            ),
        ));
        return $count->post_count;
    }
    

    Con este cambio, el recuento de Sell ahora debería mostrarse correctamente como 0 si no hay publicaciones con ambas taxonomías.

Comments are closed.