Cómo usar WP_Query para excluir una etiqueta específica

13 jun 2015, 20:25:55
Vistas: 13.5K
Votos: 4

Tengo el siguiente código funcional para una consulta en una categoría específica y slug de etiqueta:

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

 $my_query = new WP_Query( $args );

No logro entender cómo excluir un nombre de etiqueta específico de la consulta. ¿Necesito el ID de la etiqueta? ¿Cómo lo obtengo? Gracias de antemano.

1
Comentarios

Me gustaría señalar que el rendimiento de búsquedas como post__not_in no escala muy bien en sitios más grandes

Tom J Nowell Tom J Nowell
13 jun 2015 20:35:35
Todas las respuestas a la pregunta 2
0

Usa el parámetro tag__not_in. Debes usar el ID de la etiqueta para este parámetro

$args = array(
    'category_name' => $cat_name,  // Nombre de la categoría
    'tag' => $tag_name,            // Nombre de la etiqueta
    'post__not_in' => $sticky,     // IDs de posts a excluir
    'tag__not_in' => array($tag_id_1, $tag_id_2)  // IDs de etiquetas a excluir
);

$my_query = new WP_Query( $args );  // Crear nueva consulta WP_Query
13 jun 2015 20:29:27
4

Necesitas usar 'tag__not_in' y requieres el ID de la Etiqueta. Echa un vistazo a https://codex.wordpress.org/Function_Reference/get_term_by para obtener el objeto del término, donde se encuentra el ID.

13 jun 2015 20:29:39
Comentarios

Gracias por tu respuesta. No entiendo cómo obtener el ID de la etiqueta desde esta función:

user45758 user45758
14 jun 2015 00:07:58

$tag = get_term_by('name', 'my-sticky', 'post_tag'); echo 'el id del término es '. $tag;

user45758 user45758
14 jun 2015 00:11:09

echo 'el id del término es ' . (int) $tag->term_id;

websupporter websupporter
14 jun 2015 00:30:13

Estoy obteniendo un term_id de 0. ¿Podría esto ser correcto? ¿Cómo puedo verificarlo?

user45758 user45758
14 jun 2015 16:06:27