WP_Query por un ID de categoría y un post_type personalizado

20 nov 2014, 02:17:12
Vistas: 120K
Votos: 13

Necesito consultar todas las entradas que pertenecen a una categoría determinada (predeterminada, no personalizada) y un tipo de publicación personalizado. Tan simple como eso. El hecho de que no funcione, para mí, es ridículo. ¿A menos que me esté perdiendo algo?

Esto es lo que he intentado:

$args = array(
    'posts_per_page' => 50, 
    //'taxonomy' => 'category',      
    'post_type' => 'my_custom_type'
    'category__in' => array($cat_id),
);
$wp_query = new WP_Query( $args );

luego

$args = array(
    'posts_per_page' => 50,    
    'post_type' => 'my_custom_type'
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'id',
            'terms'    => $cat_id,
        ),
    ),
 );
$wp_query = new WP_Query( $args );

y por supuesto

$args = array(
    'posts_per_page' => 50, 
    'post_type' => 'my_custom_type'
    'category' => $cat_id,
);
$wp_query = new WP_Query( $args );

también, algunas combinaciones de agregar/renombrar/eliminar las claves de $args.

Obtener todas las publicaciones por un tipo de publicación y luego recorrerlas y filtrarlas por categoría no es una opción efectiva, creo.

Por favor, ayuda.

6
Comentarios

bueno, tu primer ejemplo tiene un error tipográfico. Asumo que tienes la depuración habilitada y no estás viendo ningún error? ¿dónde estableces $cat_id? puedes hacer var_dump de tu consulta después y mirar el SQL generado, debería revelar el problema. también, probablemente no deberías estar sobrescribiendo $wp_query.

Milo Milo
20 nov 2014 02:39:28

@Milo gracias ok el $cat_id es en realidad una clave de array (de ahí vino la comilla simple), acabo de editarlo para que sea una variable simple y así esta pregunta se vea menos desordenada. Gracias por señalar eso. En cuanto a no sobrescribir el $wp_query - lo tendré en cuenta, gracias

ᴍᴇʜᴏᴠ ᴍᴇʜᴏᴠ
20 nov 2014 02:52:33

Todavía parecen haber errores de sintaxis allí Jamaica. Falta una coma en tu array que debería lanzar un error de análisis en PHP. ¿Puedes publicar el código real que estás usando sin ediciones?

jdm2112 jdm2112
20 nov 2014 04:32:12

@jdm2112 Vergüenza para mí, era la coma. Esto explica por qué no obtenía nada al intentar descomentar las claves relacionadas con categorías. Te pediría que publiques la sugerencia como respuesta para poder aceptarla y votarla, pero no estoy seguro de si esto será útil para la comunidad. En cambio, he votado tus otras respuestas. Eliminaré esta pregunta un poco más tarde. Gracias

ᴍᴇʜᴏᴠ ᴍᴇʜᴏᴠ
20 nov 2014 15:50:31

Me alegra que eso lo haya resuelto para ti.

jdm2112 jdm2112
20 nov 2014 18:29:47
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 3
1
15

Prueba esto, a mí me funciona.

    $args=array(
    'posts_per_page' => 50, 
    'post_type' => 'my_custom_type'
    'cat' => $cat_id,
);
$wp_query = new WP_Query( $args );

Parámetros de Categoría

cat (int): usa el ID de la categoría.
category_name (string): usa el slug de la categoría (NO el nombre).
category__and (array): usa el ID de la categoría.
category__in (array): usa el ID de la categoría.
category__not_in (array): usa el ID de la categoría.
12 sept 2016 13:25:59
Comentarios

Hola @kunal-gauswami, bienvenido al sitio y gracias por tu respuesta. Lamentablemente ya no tengo el código así que no puedo probar tu sugerencia, pero si alguien confirma que funcionó, aceptaré gustoso la respuesta. De cualquier modo, aquí tienes mi voto positivo.

ᴍᴇʜᴏᴠ ᴍᴇʜᴏᴠ
16 sept 2016 11:23:48
1

esto funcionó para mí.

$args=array(
'posts_per_page' => 50,    
'post_type' => 'my_custom_type'
'tax_query' => array(
    array(
        'taxonomy' => 'category', //verifica dos veces el nombre de tu taxonomía en tu dd (dump de datos)
        'field'    => 'id',
        'terms'    => $cat_id,
    ),
   ),
 );
$wp_query = new WP_Query( $args );
4 nov 2019 14:10:00
Comentarios

Esta respuesta es correcta si estás haciendo una consulta para una taxonomía personalizada vinculada al tipo de entrada personalizada

Low Low
22 ene 2020 11:26:29
0

Obtener publicaciones por ID de categoría

$categories = get_categories();
$loop = new WP_Query([
    'posts_per_page' => 6,
    'post_type' => 'post',
    'tax_query' => [
        [
            'taxonomy' => 'category',
            'field' => 'id',
            'terms' => $categories[0]->term_id
        ],
    ],
]);
2 feb 2024 15:53:53