Cum exclud o taxonomie personalizată din bucla postărilor

16 mar. 2011, 16:50:04
Vizualizări: 57.5K
Voturi: 28

Există o modalitate simplă sau ușoară de a exclude toate postările dintr-o taxonomie personalizată în buclă? Am căutat peste tot, iar nici Stack Exchange, Stack Overflow sau Google nu par să aibă un răspuns direct.

Știu că acest lucru poate fi făcut printr-o interogare WPDB, dar pare un efort prea mare pentru ceva ce ar trebui să fie destul de simplu.

3
Comentarii

Orice postări care au termeni în acea taxonomie, sau te referi la un anumit termen din taxonomia ta personalizată? Exemplu: Dacă taxonomia mea este fructe și am doi termeni, măr și portocală, aș vrea să exclud toate postările care au fructe, sau doar cele care au mere?

t31os t31os
16 mar. 2011 17:00:59

pentru a extinde întrebarea lui @t31os: post_tag, category, link_category etc. sunt toate taxonomii _builtin. Deci, chiar dacă ai numi etichetele postărilor „termeni”, ele sunt tot doar o taxonomie (neierarhică) și la același „nivel” ca taxonomia „category” (ierarhică).

kaiser kaiser
16 mar. 2011 19:36:18

Pentru a continua exemplul lui @t31os: Încerc să exclud toate postările care sunt în taxonomia fructe (indiferent dacă sunt în „mere”, „pere” sau „portocale”).

Thomas Thomas
17 mar. 2011 09:52:48
Toate răspunsurile la întrebare 6
4
31

Soluția la această problemă nu este prea bine cunoscută, dar ar trebui să fie.

Puteți face următoarele:

$args['tax_query'] = array(
    array(
        'taxonomy' => 'category',
        'terms' => array('pisica', 'caine'),
        'field' => 'slug',
        'operator' => 'NOT IN',
    ),
);
query_posts($args);

Argumentul `operator` poate accepta și alte valori, dar codul de mai sus practic spune să obțineți toate articolele din taxonomia 'category' care nu au termenii 'pisica' sau 'caine'.

21 mar. 2011 13:07:04
Comentarii

Deștept. Dar tot ar trebui să introduc manual fiecare termen din acea taxonomie, corect?

Thomas Thomas
21 mar. 2011 13:45:20

Îmi pare rău, dar nu te urmăresc. În array-ul de termeni, definești valorile termenilor pe care vrei să le excludi din interogarea loop-ului. Dacă vrei să fie dinamice, poți adăuga o valoare meta personalizată fiecărui post și apoi să verifici valoarea acelui cheie meta în interogarea ta și să o setezi în acest fel, dacă asta înțelegi.

Dwayne Charrington Dwayne Charrington
21 mar. 2011 14:18:13

Ah. Înțeleg ce vrei să spui, dar asta e foarte complicat.

Thomas Thomas
27 mar. 2011 15:59:16

Nu am căutat cu adevărat, dar cu siguranță trebuie să existe un plugin care face ceea ce ceri tu, nu?

Dwayne Charrington Dwayne Charrington
27 mar. 2011 23:30:17
2
20

Ați dori să utilizați operatorul NOT EXISTS împreună cu trecerea slug-ului taxonomiei, ceea ce indică interogării să nu includă nicio postare dintr-o categorie aleasă din taxonomia personalizată în buclă.

Pentru a exclude toate postările care se află în taxonomia "fruit" (indiferent de tipul de fruct), iată fragmentul de cod:

$args = array(
    'post_type'      => 'post',
    'tax_query'      => array(
        array(
            'taxonomy' => 'fruit',
            'operator' => 'NOT EXISTS'
        )
    )
);

$query = new WP_Query( $args );
17 apr. 2017 19:23:22
Comentarii

Aceasta pare să fie mai eficientă decât utilizarea NOT IN pentru un număr XX de terms. Acea listă de termeni ar putea crește considerabil, dar această soluție ar trebui să acopere toți termenii din acea taxonomie.

italiansoda italiansoda
12 mai 2017 22:48:22

Deși acesta este răspunsul la întrebarea OP (upvoted), majoritatea dintre noi probabil dorim să excludem un anumit termen sau un set de termeni. Pentru asta, veți dori acest răspuns.

rinogo rinogo
2 aug. 2019 21:34:38
0

Iată cum se poate realiza pentru tipuri de postări personalizate și taxonomii personalizate:

$happening = new WP_Query(
array( 
  'post_type'  => 'news',        // interoghează doar tipul de postare News
  'tax_query' => array(
    array(
        'taxonomy'  => 'news-cat',
        'field'     => 'slug',
        'terms'     => 'media', // exclude elementele din categoria media în taxonomia personalizată news-cat
        'operator'  => 'NOT IN')

        ),
   )
);

Această metodă a funcționat perfect pentru a exclude o taxonomie personalizată dintr-un tip de postare personalizată.. Doresc să adaug și codul buclei de interogare pentru a completa fragmentul: while ( $the_query->have_posts() ) : $the_query->the_post();

29 sept. 2011 22:47:49
0
query_posts( array(
    'post_type' => 'listings',
    'tax_query' => array(
        array(
            'taxonomy' => 'status',
            'field'    => 'slug',
            'terms'    => 'sold',
            'operator' => 'NOT IN'
            ),
        )
    )
);

Acest cod exclude status => sold din post_type => listings

21 ian. 2017 10:49:49
0

Am făcut următoarele pentru a exclude postările dintr-un anumit termen de taxonomie:

$argos = array( 
    'tax_query' =>  array (
        array(
            'taxonomy' => 'topics', // Taxonomia mea personalizată
            'terms' => 'college', // Termenul de taxonomie pe care am vrut să-l exclud
            'field' => 'slug', // Specifică dacă folosesc slug-ul termenului sau ID-ul termenului
            'operator' => 'NOT IN', // Operatorul de selecție - folosește IN pentru a include, NOT IN pentru a exclude
        ),
    ),
    'post_type'=>'page', // Tipul de postare pe care vreau să-l afișez, poate fi și un tip personalizat
    'posts_per_page' => -1,
    'orderby' => 'title',
    'order'=>'ASC',
    'post_parent' =>$post->ID // afișează postările sau paginile copil ale paginii/postării curente
); 

$query = new WP_Query( $args );
27 apr. 2012 11:00:15
1
-1

Eu folosesc plugin-ul WordPress "RYO ‘Category Visibility’" care pare să funcționeze destul de bine.

Poți decide pe o pagină de administrare ce categorii sunt vizibile sau excluse din diverse zone.

http://ryowebsite.com/wp-plugins/category-visibility/

-Adam

16 mar. 2011 18:34:36
Comentarii

Mi se pare că a fi nevoit să instalez un plugin suplimentar pentru asta este exagerat. Aș prefera să-mi mențin dependențele la minimum și cu siguranță trebuie să existe o modalitate de a face acest lucru direct în buclă.

Thomas Thomas
17 mar. 2011 09:53:35