Existe uma maneira fácil de consultar as postagens marcadas com qualquer termo de uma taxonomia específica?
Eu conheço esta técnica:
$custom_taxonomy_query = new WP_Query(
array(
'taxonomy_name' => 'term_slug',
)
);
Mas eu gostaria de passar um curinga no lugar de term_slug, ou talvez apenas uma string vazia. Isso me daria todas as postagens marcadas por qualquer termo nessa taxonomia, não apenas um termo específico.
Obrigado pela sua ajuda, Dave
Algo assim pode funcionar:
Você está basicamente solicitando qualquer postagem atribuída a qualquer termo dentro de sua_personalidade_taxonomia.
fonte
Olá @Dave Morris:
Você está correto, o WordPress decide se você não tem um termo, eles simplesmente ignoram sua taxonomia.
Existem três (3) abordagens principais que você pode tentar:
Use uma consulta SQL completa com
$wpdb->get_results()
,Obtenha uma lista de
$post->ID
s para todas as postagens em sua taxonomia e depois passe-as usando o'post__id'
argumento ouAnote o SQL usado
WP_Query
com um dos ganchos que permitem adicionar um SQLINNER JOIN
referenciando as tabelas de taxonomia.Eu tento evitar o SQL completo no WordPress até que não possa ser ajudado ou simplesmente retornando uma lista de IDs. E, nesse caso, eu evitaria extrair uma lista de
$post-ID
s para usar com o'post__id'
argumento, pois ele poderia ter problemas de desempenho e até problemas de memória se você tivesse muitas postagens. Então isso nos deixa com o # 3.Eu criei uma classe para estender
WP_Query
chamadoPostsByTaxonomy
que usa o'posts_join
'gancho. Você pode vê-lo aqui:Você chamaria essa classe como você vê abaixo. O argumento
'taxonomy'
é necessário, mas você pode passar qualquer (todos?) Dos outros parâmetros que tambémWP_Query
esperam, como'posts_per_page'
:Você pode copiar a
PostsByTaxonomy
classe para ofunctions.php
arquivo do seu tema ou usá-la em um.php
arquivo de um plug-in que esteja escrevendo.Se você quiser testá-lo rapidamente, publiquei uma versão independente do código no Gist, na qual você pode baixar e copiar a raiz do servidor da Web como
test.php
, modificar para o seu caso de uso e solicitar no seu navegador usando um URL comohttp://example.com/test.php
.ATUALIZAR
Para omitir postagens adesivas das postagens incluídas na consulta, tente o seguinte:
Ou se é importante para você que a
PostsByTaxonomy
classe nunca inclua postagens fixas, você pode colocá-la no construtor:ATUALIZAÇÃO 2
Depois de postar o que aprendi acima, aprendi que 'caller_get_posts' será descontinuado e
'ignore_sticky_posts'
será usado no WordPress 3.1.fonte
caller_get_posts=1
e eles desaparecerem: codex.wordpress.org/Function_Reference/… Espero que isso ajude.if(isset($query->posts_by_taxonomy))
é um bom truque para combinar a metodologia orientada a objetos com a metodologia hook do WordPress.Você deve conseguir definir a taxonomia e negar para incluir um termo.
Por exemplo.
O que seria praticamente o mesmo que a consulta que um arquivo de taxonomia realiza.
fonte
WP_Query
basta jogá-lo fora.WP_Query
infelizmente não é implementado de maneira tão elegante. São quase 1200 linhas de casos especiais codificados.