Come interrogare articoli di autori e categorie specifiche usando WP_query?

12 feb 2014, 16:12:13
Visualizzazioni: 33K
Voti: 2

Attualmente ho una WP_query dove ottengo post da un set specifico di autori. A questo, voglio aggiungere anche categorie specifiche.

$args = array( 'author__in' => $authors, 'posts_per_page' => 12, 'paged' => $paged );

$authors è un array contenente gli ID degli utenti.

Quindi, ho bisogno di interrogare i post sia dagli autori che dalle categorie.

Stavo pensando di usare qualcosa del genere:

'tax_query' => array(
    'relation' => 'OR',
    array(
        'taxonomy' => 'category',
        'field' => 'id',
        'terms' => array ( $cat_ids ),
    ),
    array(
        'taxonomy', => 'user',
        'field' => 'id',
        'terms' => array( $user_ids ),
    )
)

So che l'utente non è una tassonomia; tuttavia, sto cercando qualcosa di simile che funzioni.

MODIFICA

Bene, ho provato questo e finora sta funzionando:

$args = array(
  'author__in'     => $authors,
  'category__in'   => $terms,
  'posts_per_page' => 12,
  'paged'          => $paged
);

C'è un modo migliore?

MODIFICA 2

La mia modifica precedente non funziona come volevo. Il problema è che quando vengono specificate solo le categorie, non viene mostrato alcun post. Ho bisogno di una relazione OR.

MODIFICA 3

Non sono riuscito a trovare una soluzione. Quando uso author__in e category__in per gli argomenti, WordPress mostra solo i post degli autori e non entrambi. Ho bisogno di mostrare i post sia degli autori CHE delle categorie. Cosa sto sbagliando qui?

5
Commenti

author__in è il modo per farlo, ma sembra quello con cui hai iniziato.

s_ha_dum s_ha_dum
12 feb 2014 16:28:03

sì, ma ora voglio ottenere anche i post da categorie specifiche nella stessa query.

Gixty Gixty
12 feb 2014 16:35:13

C'è una capacità di ricerca utente molto limitata in WP_Query. Mi dispiace. Non è chiaro cosa tu voglia. Ci sono molti modi per interpretare la tua domanda. Per favore enumera le tue condizioni con molta attenzione.

s_ha_dum s_ha_dum
12 feb 2014 16:46:20

ok, provo a chiarire. Voglio interrogare i post in base agli ID delle categorie e degli autori nella stessa query.

Gixty Gixty
12 feb 2014 16:48:07

ciao, stai lavorando con il post type "post"? e la tassonomia "category"?

Aamer Shahzad Aamer Shahzad
22 nov 2016 04:35:58
Tutte le risposte alla domanda 3
5

È questo quello che stai cercando?

$query = new wp_query($arr);
    $arr = array(
        'author__in'=> array(2,4,6), //ID degli autori che vuoi includere
        'posts_per_page' => '12',
        'paged' => $paged,
        'tax_query' => array(
        array(
        'taxonomy' => 'category',
        'field' => 'id',
        'terms' => array ( $cat_ids ),
        )
    )
    );
12 feb 2014 16:43:54
Commenti

Sì, stavo cercando qualcosa del genere. Non ero sicuro se potevo mantenere author__in, sto ancora imparando e voglio fare le cose nel modo giusto. Anche la mia modifica EDIT funziona, quindi cosa mi consiglieresti di usare?

Gixty Gixty
12 feb 2014 16:46:17

La tua modifica mi sembra buona, purché assolva allo scopo.

Sudeep K Rana Sudeep K Rana
12 feb 2014 16:48:32

Cosa succede se non ci sono autori? I post delle categorie specificate verranno comunque mostrati?

Gixty Gixty
12 feb 2014 16:50:48

Bene, in quel caso i post non verranno visualizzati. Suppongo che WP_Query faccia un AND logico con le query e se un parametro non è presente finirà per non restituire nulla.

Quello che puoi fare è impostare 2 query, quando la prima fallisce (restituisce null) l'altra (senza il parametro dell'autore) prende il posto.

Sudeep K Rana Sudeep K Rana
12 feb 2014 16:56:50

Non ho trovato una soluzione per questo. Dove altro posso cercare aiuto? Quando uso author__in e category__in all'interno degli argomenti, mostra solo i post degli autori, non delle categorie.

Gixty Gixty
20 feb 2014 22:44:16
0

Potresti provare qualcosa come questo... get_posts_by_author_sql

In alternativa, se vuoi selezionare i post in base agli autori/categorie potresti usare wpdb. Potresti utilizzare un "JOIN" nell'SQL per ottenere gli ID dei post che ti servono.

19 set 2016 00:48:27
0

potresti provare questo nel backend:

wp-admin/edit.php?author=2 //autore specificato
wp-admin/edit.php?cat=16,25&author=2 //include categorie

questo test non appare come descrivi, quindi controlla se il valore è corretto

$terms = array(16,25);
//$author = array(2);
$args = array(
    'author__in'  => isset($author) ? $author : 0,
    'category__in' => isset($terms) ? $terms : ''
    );
$demos = new WP_Query($args);
echo "<pre>";
print_r($demos);
echo "</pre>";
22 nov 2016 03:32:36