WP_Query per ID categoria e custom post_type

20 nov 2014, 02:17:12
Visualizzazioni: 120K
Voti: 13

Ho bisogno di interrogare tutti i post che appartengono a una determinata categoria (predefinita, non personalizzata) e a un custom post type. Semplicemente questo. Il fatto che non funzioni, per me, è ridicolo. A meno che non mi stia sfuggendo qualcosa?

Ecco cosa ho provato:

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

poi

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

e naturalmente

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

inoltre, alcune combinazioni di aggiunta/ridenominazione/rimozione delle chiavi $args.

Ottenere tutti i post per tipo di post e poi ciclarli e filtrarli per categoria non è un'opzione efficace, credo.

Per favore aiutatemi.

6
Commenti

beh il tuo primo esempio ha un errore di battitura. Suppongo tu abbia il debug abilitato e non stia vedendo alcun errore? dove imposti $cat_id? puoi fare un var_dump della tua query dopo e guardare il SQL generato, dovrebbe rivelare il problema. inoltre, probabilmente non dovresti sovrascrivere $wp_query.

Milo Milo
20 nov 2014 02:39:28

@Milo grazie ok il $cat_id è in realtà una chiave di array (da qui veniva l'apice singolo), l'ho modificato per essere una semplice variabile così la domanda appare meno confusa. Grazie comunque per averlo fatto notare. Per quanto riguarda non sovrascrivere $wp_query - lo terrò a mente, grazie

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

Sembrano ancora esserci errori di sintassi, Jamaica. La virgola mancante nel tuo array dovrebbe generare un errore di parsing in PHP. Puoi postare il codice effettivo che stai utilizzando senza modifiche?

jdm2112 jdm2112
20 nov 2014 04:32:12

@jdm2112 Vergogna su di me, era la virgola. Questo spiega perché non ottenevo nulla quando cercavo di decommentare le chiavi relative alle categorie. Ti chiederei di postare il suggerimento come risposta così posso accettarla e votarla, ma non sono sicuro se sarà utile per la community. Ho invece votato le tue altre risposte. Eliminerò questa domanda più tardi. Grazie

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

Contento che abbia risolto il problema per te.

jdm2112 jdm2112
20 nov 2014 18:29:47
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 3
1
15

Prova questo, funziona per me.

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

Parametri delle Categorie

cat (int): usa l'ID della categoria.
category_name (string): usa lo slug della categoria (NON il nome).
category__and (array): usa l'ID della categoria.
category__in (array): usa l'ID della categoria.
category__not_in (array): usa l'ID della categoria.
12 set 2016 13:25:59
Commenti

Ciao @kunal-gauswami, benvenuto nel sito e grazie per la tua risposta. Purtroppo non ho più il codice quindi non posso provare il tuo suggerimento, ma se qualcuno conferma che ha funzionato, accetterò volentieri la risposta. Comunque ecco un voto positivo da parte mia.

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

questo ha funzionato per me.

$args=array(
'posts_per_page' => 50,    
'post_type' => 'my_custom_type'
'tax_query' => array(
    array(
        'taxonomy' => 'category', //verifica il nome della tassonomia nel tuo database
        'field'    => 'id',
        'terms'    => $cat_id,
    ),
   ),
 );
$wp_query = new WP_Query( $args );
4 nov 2019 14:10:00
Commenti

Questa risposta è corretta se stai eseguendo una query per una tassonomia personalizzata collegata al tipo di post personalizzato

Low Low
22 gen 2020 11:26:29
0

Ottieni articoli per ID della categoria

$categories = get_categories();
$loop = new WP_Query([
    'posts_per_page' => 6,       // Numero di articoli da mostrare
    'post_type' => 'post',     // Tipo di contenuto (articoli)
    'tax_query' => [            // Query per tassonomia
        [
            'taxonomy' => 'category',  // Tassonomia categoria
            'field' => 'id',          // Campo da usare per il confronto (ID)
            'terms' => $categories[0]->term_id  // ID della prima categoria
        ],
    ],
]);
2 feb 2024 15:53:53