Cum să interogăm articole de la autori și categorii specifice folosind WP_query?

12 feb. 2014, 16:12:13
Vizualizări: 33K
Voturi: 2

În prezent am o interogare WP_query unde obțin articole de la un set specific de autori. La aceasta, vreau să adaug și categorii specifice.

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

$authors este un array care conține ID-urile utilizatorilor.

Deci, am nevoie să interoghez articole din ambele surse, și de la autori și din categorii.

Mă gândeam să folosesc ceva de genul:


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

Știu că user nu este o taxonomie; totuși, caut ceva similar care să funcționeze.

EDITARE

Am încercat următoarea variantă și până acum funcționează:

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

Există o modalitate mai bună?

EDITARE 2

Editarea mea anterioară nu funcționează așa cum am dorit. Problema este că atunci când sunt specificate doar categoriile, nu apar articole. Am nevoie de o relație OR.

EDITARE 3

Nu am reușit să găsesc o soluție. Când folosesc author__in și category__in pentru argumente, WordPress afișează doar articolele de la autori și nu din ambele surse. Am nevoie să afișez articole atât de la autori CÂT ȘI din categorii. Ce fac greșit aici?

5
Comentarii

author__in este modalitatea de a face acest lucru, dar se pare că asta ai încercat deja.

s_ha_dum s_ha_dum
12 feb. 2014 16:28:03

da, dar acum vreau să obțin postările din anumite categorii în aceeași interogare.

Gixty Gixty
12 feb. 2014 16:35:13

Capacitatea de căutare a utilizatorilor în WP_Query este foarte limitată. Îmi pare rău. Nu este clar ce dorești. Există mai multe moduri de a interpreta întrebarea ta. Te rog enumeră-ți condițiile foarte atent.

s_ha_dum s_ha_dum
12 feb. 2014 16:46:20

ok, hai să încerc să clarific. Vreau să interoghez postări în funcție de categorii și ID-uri de autori în aceeași interogare.

Gixty Gixty
12 feb. 2014 16:48:07

salut, lucrezi cu tipul de postare "post"? și taxonomia "category"?

Aamer Shahzad Aamer Shahzad
22 nov. 2016 04:35:58
Toate răspunsurile la întrebare 3
5

Este acesta ceea ce cauți?

$query = new wp_query($arr);
    $arr = array(
        'author__in'=> array(2,4,6), // ID-urile autorilor pe care doriți să-i includeți
        'posts_per_page' => '12', // Numărul de articole pe pagină
        'paged' => $paged, // Pagina curentă
        'tax_query' => array(
        array(
        'taxonomy' => 'category', // Taxonomia (în acest caz, categoria)
        'field' => 'id', // Câmpul după care se filtrează (ID)
        'terms' => array ( $cat_ids ), // ID-urile categoriilor
        )
    )
    );
12 feb. 2014 16:43:54
Comentarii

Da, căutam ceva de genul acesta. Nu eram sigur dacă pot păstra author__in, încă învăț și vreau să fac lucrurile corect. EDIT-ul meu funcționează și el, așa că ce mi-ai recomanda să folosesc?

Gixty Gixty
12 feb. 2014 16:46:17

Editarea ta mi se pare bună, atâta timp cât îndeplinește scopul.

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

Ce se întâmplă dacă nu există autori? Vor fi tot afișate postările din categoriile specificate?

Gixty Gixty
12 feb. 2014 16:50:48

Ei bine, în acest caz postările nu vor fi afișate. Presupun că WP_Query face o operație logică AND între interogări și dacă un parametru nu este prezent, va rezulta în nimic.

Ceea ce poți face este să configurezi două interogări, atunci când prima interogare eșuează (returnează null) cealaltă (fără parametrul autor) preia controlul.

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

Nu am găsit o soluție pentru aceasta. Unde altundeva pot căuta ajutor? Când folosesc author__in și category__in în interiorul argumentelor, afișează doar postări de la autori, nu din categorii.

Gixty Gixty
20 feb. 2014 22:44:16
0

Ai putea încerca ceva de genul acesta... get_posts_by_author_sql

Alternativ, dacă dorești să selectezi postări bazate pe autori/categorii, ai putea folosi wpdb. S-ar putea să poți utiliza un "JOIN" în SQL pentru a obține ID-urile postărilor de care ai nevoie.

19 sept. 2016 00:48:27
0

poți încerca acest lucru în backend:

wp-admin/edit.php?author=2 //autorul este specificat
wp-admin/edit.php?cat=16,25&author=2 //include categorii

acest test nu apare așa cum descrii, așa că verifică dacă valoarea este corectă

$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