cum pot folosi WP_Query pentru a exclude un tag specific?

13 iun. 2015, 20:25:55
Vizualizări: 13.5K
Voturi: 4

Am următorul cod funcțional pentru o interogare pe o categorie specifică și un slug de tag:

$args = array(
'category_name' => $cat_name,
'tag' => $tag_name,
'post__not_in' => $sticky
);

$my_query = new WP_Query( $args );

Nu reușesc să înțeleg cum să exclud un nume de tag specific din interogare. Am nevoie de ID-ul tag-ului? Cum îl pot obține? Mulțumesc anticipat.

1
Comentarii

Aș dori să menționez că performanța căutărilor precum post__not_in nu se scalează foarte bine pe site-uri mari

Tom J Nowell Tom J Nowell
13 iun. 2015 20:35:35
Toate răspunsurile la întrebare 2
0

Folosește parametrul tag__not_in. Trebuie să utilizezi ID-ul tagului pentru acest parametru

$args = array(
    'category_name' => $cat_name, // Numele categoriei
    'tag' => $tag_name,          // Numele tagului
    'post__not_in' => $sticky,   // ID-urile posturilor de exclus
    'tag__not_in' => array($tag_id_1, $tag_id_2) // ID-urile tagurilor de exclus
);

$my_query = new WP_Query( $args ); // Inițializează interogarea WordPress
13 iun. 2015 20:29:27
4

Trebuie să folosești 'tag__not_in' și ai nevoie de ID-ul Tag-ului. Aruncă o privire în https://codex.wordpress.org/Function_Reference/get_term_by pentru a obține obiectul termenului, unde este conținut ID-ul.

13 iun. 2015 20:29:39
Comentarii

Mulțumesc pentru răspuns. Nu înțeleg cum să obțin ID-ul tagului din această funcție:

user45758 user45758
14 iun. 2015 00:07:58

$tag = get_term_by('name', 'my-sticky', 'post_tag'); echo 'the term id is '. $tag;

user45758 user45758
14 iun. 2015 00:11:09

echo 'the term id is ' . (int) $tag->term_id;

websupporter websupporter
14 iun. 2015 00:30:13

Am obținut un term_id de 0. Este posibil să fie corect? Cum pot verifica?

user45758 user45758
14 iun. 2015 16:06:27