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.

Este código no está filtrando la categoría en WordPress. Si elimino el slug de la categoría, muestra los datos, pero si solicito una categoría específica, no funciona.

Este código no está filtrando la categoría en WordPress. Si elimino el slug de la categoría, muestra los datos, pero si solicito una categoría específica, no funciona.
Por favor, ayúdame con esto.

$args = array(
    'post_type' => 'post',
    'posts_per_page' => intval( $items ),
    'paged' => $paged
);

if ( ! empty( $cat_slug ) ) {
    $args['tax_query'] = array(
        array(
            'taxonomy' => 'post_category',
            'field' => 'slug',
            'terms' => $cat_slug
        ),
    );
}

if ( ! empty( $exclude_cat_slug ) ) {
    $args['tax_query'] = array(
        array(
            'taxonomy' => 'post_category',
            'field' => 'slug',
            'terms' => $exclude_cat_slug,
            'operator' => 'NOT IN'
        ),
    );
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Por el código proporcionado, parece que el filtro de categoría no está funcionando cuando se solicita una categoría específica ($cat_slug). El problema podría ser que el argumento tax_query se está sobrescribiendo en caso de que exista, y solo se está aplicando el último configurado.

    Para resolver esto, puedes modificar el código para fusionar ambos argumentos tax_query en un solo array utilizando un operador (‘AND’ o ‘OR’). Aquí tienes un ejemplo:

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => intval($items),
        'paged' => $paged,
        'tax_query' => array(),
    );
    
    if (!empty($cat_slug)) {
        $args['tax_query'][] = array(
            'taxonomy' => 'category',
            'field' => 'slug',
            'terms' => $cat_slug,
        );
    }
    
    if (!empty($exclude_cat_slug)) {
        $args['tax_query'][] = array(
            'taxonomy' => 'category',
            'field' => 'slug',
            'terms' => $exclude_cat_slug,
            'operator' => 'NOT IN',
        );
    }
    
    $filtered_posts = new WP_Query($args);
    
    

    En este código actualizado, hemos inicializado el array tax_query como un array vacío, y luego agregamos cada consulta de taxonomía como un elemento de array separado. Esto asegurará que se apliquen ambas consultas de taxonomía y no se sobrescriban.

    ¡Espero que esto te ayude!

Comments are closed.