¿Hay una manera fácil de consultar cualquier publicación que esté etiquetada con algún término de una taxonomía particular?
Conozco esta técnica:
$custom_taxonomy_query = new WP_Query(
array(
'taxonomy_name' => 'term_slug',
)
);
Pero me gustaría pasar un comodín en lugar de term_slug, o tal vez solo una cadena vacía. Entonces eso me daría todas las publicaciones etiquetadas por cualquier término en esa taxonomía, no solo un término específico.
Gracias por tu ayuda, Dave
Algo como esto podría funcionar:
Básicamente, está solicitando cualquier publicación asignada a cualquier término dentro de your_custom_taxonomy.
fuente
Hola @Dave Morris:
Tienes razón, WordPress decide que si no tienes un término, simplemente ignorarán tu taxonomía.
Hay tres (3) enfoques principales que puede probar:
Use una consulta SQL completa con
$wpdb->get_results()
,Obtenga una lista de
$post->ID
s para todas las publicaciones en su taxonomía y luego páselos usando el'post__id'
argumento, oAnote el SQL utilizado por
WP_Query
uno de los ganchos que le permite agregar un SQL que haceINNER JOIN
referencia a las tablas de taxonomía.Intento evitar el SQL completo en WordPress hasta que no se puede evitar o simplemente devuelve una lista de ID. Y en este caso, evitaría obtener una lista de
$post-ID
s para usar con el'post__id'
argumento porque podría tener problemas de rendimiento e incluso problemas de memoria si tuviera muchas publicaciones. Entonces eso nos deja con el # 3.He creado una clase para extender
WP_Query
llamadaPostsByTaxonomy
que usa el'posts_join
'gancho'. Puedes verlo aqui:Llamarías a esta clase como ves a continuación. El argumento
'taxonomy'
es obligatorio, pero también puede pasar cualquiera (¿todos?) De los otros parámetros queWP_Query
espera, como'posts_per_page'
:Puede copiar la
PostsByTaxonomy
clase en elfunctions.php
archivo de su tema , o puede usarlo dentro de un.php
archivo de un complemento que esté escribiendo.Si desea probarlo rápidamente, publiqué una versión autónoma del código en Gist que puede descargar y copiar en la raíz de su servidor web
test.php
, modificar para su caso de uso y luego solicitarlo desde su navegador usando una URL comohttp://example.com/test.php
.ACTUALIZAR
Para omitir publicaciones fijas de las publicaciones incluidas en la consulta, intente esto:
O si es importante para usted que la
PostsByTaxonomy
clase nunca incluya publicaciones fijas, puede ponerlas en el constructor:ACTUALIZACIÓN 2
Después de publicar lo anterior, aprendí que 'caller_get_posts' quedará en desuso y
'ignore_sticky_posts'
se usará en WordPress 3.1.fuente
caller_get_posts=1
y deberían desaparecer: codex.wordpress.org/Function_Reference/… Espero que esto ayude.if(isset($query->posts_by_taxonomy))
un buen truco para combinar la metodología orientada a objetos con la metodología de enlace de WordPress.Debería poder establecer la taxonomía y negar para incluir un término.
P.ej.
Lo que sería más o menos lo mismo que la consulta que realiza un archivo de taxonomía.
fuente
WP_Query
simplemente bótelo.WP_Query
desafortunadamente no se implementa de una manera tan elegante. Son casi 1200 líneas de cajas especiales codificadas.