Como consultar postagens por categoria e tag?
-
-
Eu acho que com Query_Posts () você sópodefazer uso de categoria outag.Nãotenho certeza,mastalvez o uso dafunçãoesteja limitado àquele que significaria queissoestáfuncionando corretamente,masnãofaz o que você querfazerisso.I think with query_posts() you can only make use of category or tag. I'm not sure, but maybe the use of the function is limited to that which would mean that this is correctly working but it doesn't do what you want to do it.
- 0
- 2010-11-17
- hakre
-
5 respostas
- votos
-
- 2010-12-03
Editar: veja abaixopara umamaneira correta de consultar a categoriae interseções detag.
global $wp_query; $args = array( 'category__and' => 'category', //must use category id for this field 'tag__in' => 'post_tag', //must use tag id for this field 'posts_per_page' => -1); //get all posts $posts = get_posts($args); foreach ($posts as $post) : //do stuff endforeach;
Edit: See below for proper way to query category and tag intersections.
global $wp_query; $args = array( 'category__and' => 'category', //must use category id for this field 'tag__in' => 'post_tag', //must use tag id for this field 'posts_per_page' => -1); //get all posts $posts = get_posts($args); foreach ($posts as $post) : //do stuff endforeach;
-
- 2010-12-04
Eu acho queisso ébugno WordPress quefoi comentadoem outro lugar,tente usar onome datagem vez do ID,em seguida,devefuncionar:
$args = array( 'posts_per_page' => 3, 'tag' => 'review', 'cat' => 9, ); query_posts($args);
Deixe-nos saber como você consegue,não sabe o que acontece comtags com váriaspalavrasnonome.
I think this is bug in WordPress that has been commented on elsewhere, try using the name of the tag rather than the ID then it should work:
$args = array( 'posts_per_page' => 3, 'tag' => 'review', 'cat' => 9, ); query_posts($args);
Let us know how you get on, not sure what happens with tags with multiple words in the name.
-
- 2014-06-08
Eutropeçonessemesmoproblemae resolvi-lofazendo uma solicitaçãomysql.
Em suma: get_post ($ args) retornaráposts quetêm a categoria=mycategory ou atag=mytag.
O que você quer é alterar o seu ou para e .
Minha lógicafoiir direto com uma consultamysql:
- consulta 1=selecionetodos osposts quepossuem a categoria Mycat
- consulta 2=selecionetodos osposts quetem atagmytag
- Finalmente: selecionetodos osposts queestãona consulta 1e a consulta 2.
Eu usei wpdb em vez de query_post ();
umpouco de código (retornandopostagenspublicadas com categoria Mycate tagmytag) :
$query_byTag=" SELECT wp_posts.ID FROM wp_posts, wp_term_relationships, wp_terms WHERE wp_posts.ID = wp_term_relationships.object_id AND wp_terms.term_id = wp_term_relationships.term_taxonomy_id AND wp_terms.name = 'MyTag'"; $query_byCat=" SELECT wp_posts.ID FROM wp_posts, wp_term_relationships, wp_terms WHERE wp_posts.ID = wp_term_relationships.object_id AND wp_terms.term_id = wp_term_relationships.term_taxonomy_id AND wp_terms.name = 'MyCat'"; $query =" SELECT wp_posts.post_title AS title , wp_posts.post_content AS content, wp_posts.post_date AS blogdate FROM wp_posts WHERE wp_posts.post_status = 'publish' AND wp_posts.ID IN (".$query_byTag.") AND wp_posts.ID IN (".$query_byCat.") ORDER BY wp_posts.post_date DESC "; $result= $wpdb->get_results($query);
Esta é umamaneira suja defazer,masespero que ajude=)
I stumbled into this same issue and resolved it by making a MySQL request .
in short : get_post($args) will return you posts who have the category=MyCategory OR the tag=MyTag.
what you want is to change your OR to AND .
my logic was to go straight with a MySQL Query:
- Query 1 = Select all the posts who has the category MyCat
- Query 2 = Select all the posts who has the tag MyTag
- FinalLY : Select all the posts who are in Query 1 AND Query 2 .
I used wpdb instead of query_post();
A bit of code (returning published posts with category MyCat and tag MyTag ):
$query_byTag=" SELECT wp_posts.ID FROM wp_posts, wp_term_relationships, wp_terms WHERE wp_posts.ID = wp_term_relationships.object_id AND wp_terms.term_id = wp_term_relationships.term_taxonomy_id AND wp_terms.name = 'MyTag'"; $query_byCat=" SELECT wp_posts.ID FROM wp_posts, wp_term_relationships, wp_terms WHERE wp_posts.ID = wp_term_relationships.object_id AND wp_terms.term_id = wp_term_relationships.term_taxonomy_id AND wp_terms.name = 'MyCat'"; $query =" SELECT wp_posts.post_title AS title , wp_posts.post_content AS content, wp_posts.post_date AS blogdate FROM wp_posts WHERE wp_posts.post_status = 'publish' AND wp_posts.ID IN (".$query_byTag.") AND wp_posts.ID IN (".$query_byCat.") ORDER BY wp_posts.post_date DESC "; $result= $wpdb->get_results($query);
This is a dirty way to do it but I hope it helps =)
-
Isso émuitomaisfacilmente realizado com [`wp_query`e um`tax_Query`e relacionamento] (http://codex.wordpress.org/class_reference/wp_query#taxonomy_parameters),semnecessidade de sql cru.This is much more easily accomplished with [`WP_Query` and a `tax_query` AND relationship](http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters), no need for raw SQL.
- 7
- 2014-06-08
- Milo
-
Não há absolutamentenenhumanecessidade defazer consultasbrutasno WordPresspara conseguirisso.There is absolutely no need to do raw queries in WordPress to achieve this.
- 0
- 2020-01-30
- Drmzindec
-
- 2016-03-11
Este códigofunciona:
$args = array( 'tag' => get_queried_object()->slug, // If permalink like example.com/tag/example-tag, etc. 'posts_per_page' => -1, 'tax_query' => array( array( 'taxonomy' => 'category', // Taxonomy, in my case I need default post categories 'field' => 'slug', 'terms' => 'interior', // Your category slug (I have a category 'interior') ), ) ); // Get all posts $posts_new = get_posts( $args );
This code works:
$args = array( 'tag' => get_queried_object()->slug, // If permalink like example.com/tag/example-tag, etc. 'posts_per_page' => -1, 'tax_query' => array( array( 'taxonomy' => 'category', // Taxonomy, in my case I need default post categories 'field' => 'slug', 'terms' => 'interior', // Your category slug (I have a category 'interior') ), ) ); // Get all posts $posts_new = get_posts( $args );
-
- 2016-03-15
SELECT wp_posts.post_name FROM wp_posts, wp_term_relationships, wp_terms, wp_term_taxonomy WHERE wp_posts.ID = wp_term_relationships.object_id AND wp_terms.term_id = wp_term_taxonomy.term_id AND wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id AND wp_terms.name = "MY TAG"
SELECT wp_posts.post_name FROM wp_posts, wp_term_relationships, wp_terms, wp_term_taxonomy WHERE wp_posts.ID = wp_term_relationships.object_id AND wp_terms.term_id = wp_term_taxonomy.term_id AND wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id AND wp_terms.name = "MY TAG"
-
O código somente respostas raramente atende aospadrões de qualidade.Porfavor,edite sua respostae incluanotas/comentário sobre comoisso resolve oproblema originaljunto com como/ondeimplementá-lo.Code only answers rarely meet quality standards. Please edit your answer and include notes / commentary on how this solves the original issue along with how / where to implement it.
- 2
- 2016-03-15
- Howdy_McGee
-
Isso émuitomaisfacilmente realizado com WP_Querye umimpostoe relacionamento,semnecessidade de SQLbruto.This is much more easily accomplished with WP_Query and a tax_query AND relationship, no need for raw SQL.
- 0
- 2020-01-30
- Drmzindec
Euestoutentandomostrar uma lista deposts relacionados à categoria xe tag y. Eutentei o seguinte código:
Masnãofunciona corretamentee retornatodos ospostsno CO \ Ategory.
adoraria ouvir qualquerinsight que vocêpossater