Obtener la taxonomía de la página actual

5 ene 2011, 21:12:04
Vistas: 17.3K
Votos: 2

Tengo algunas páginas con una taxonomía personalizada para cada una y estoy intentando obtener esta taxonomía en la página. Básicamente necesitaría algo como the_current_taxonomy() similar a the_title(). Esto debe ejecutarse fuera del loop porque lo usaré en una WP_Query personalizada justo después.

Edición: Encontré una solución usando una forma diferente de recuperar la información que necesitaba. Gracias por su ayuda.

0
Todas las respuestas a la pregunta 4
2

Como Rarst, estoy confundido sobre lo que deseas mostrar, la taxonomía o los términos de esa taxonomía.

La taxonomía puede mostrarse, por ejemplo, si creas un archivo de plantilla con el nombre de esa taxonomía: taxonomy-name.php

El título de la taxonomía entonces se convierte en:

<h1 class="page-title"><<?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); echo $term->name; ?></h1>

Los términos dentro de una taxonomía pueden mostrarse con una nube de etiquetas, mira http://codex.wordpress.org/Function_Reference/wp_tag_cloud (pero eso está dentro del bucle)

6 ene 2011 08:43:32
Comentarios

El objetivo es mostrar el término de una taxonomía asignada a la página actual. Así que intenté mostrar los términos dentro de mi taxonomía con wp_tag_cloud() y funcionó, puedo ver el que necesito mostrar en el medio. Luego intenté usar la función get_term_by() que me diste pero sin éxito.

kevin kevin
6 ene 2011 17:36:18

También intenté cambiar el segundo parámetro a $post->ID como se muestra en el ejemplo de la http://codex.wordpress.org/Function_Reference/get_term_by#Examples página del codex, pero tampoco tuve éxito.

kevin kevin
6 ene 2011 17:41:37
10

Asumo que taxonomy es lo mismo y lo que necesitas son los terms en esa taxonomía, asignados al post?

La función de bajo nivel para esto es wp_get_object_terms(). Necesita el ID del objeto, así que si estás reiniciando los datos del post necesitarás almacenarlo previamente o extraerlo de la consulta original ($wp_query->get_queried_object_id() por lo que recuerdo).

5 ene 2011 23:01:49
Comentarios

Sí, como escribí en un comentario anterior, necesito extraer un término de una taxonomía asignada a la página para luego usarlo como parámetro en mi nueva WP_Query(). El problema de wp get object terms() es que requiere una taxonomía como parámetro.

kevin kevin
6 ene 2011 17:39:06

@kevin Asumo que si es tu propia taxonomía personalizada, sabes cuál es para usarla como parámetro? ¿O quieres todos los términos en todas las taxonomías asignadas al post? Por favor aclara.

Rarst Rarst
6 ene 2011 17:49:06

Sí, es mía, pero me expliqué bastante mal, quería encontrar el término permitido para una cierta taxonomía que conozco y que también está relacionada con la página. Lo siento por no ser tan claro.

kevin kevin
7 ene 2011 15:36:37

@kevin Todavía no lo entiendo... por favor actualiza tu pregunta con algún ejemplo específico de qué exactamente tienes y qué quieres recuperar

Rarst Rarst
7 ene 2011 17:29:34

@Rarst, problema resuelto, edité mi primer mensaje.

kevin kevin
7 ene 2011 19:01:07

@kevin si no te importa - ¿podrías agregar la solución con la que terminaste como respuesta para que otros puedan beneficiarse de ella en el futuro?

Rarst Rarst
7 ene 2011 19:02:47

@Rarst, hecho; Edit2.

kevin kevin
7 ene 2011 21:17:32

@kevin como una respuesta por favor :) Así es como funciona el sistema - pregunta y detalles por separado, respuestas competidoras por separado, incluso si estás respondiendo tu propia pregunta. De esa manera hay menos confusión si alguien ofrece una versión mejorada del código y cosas así.

Rarst Rarst
7 ene 2011 21:22:48

Claro, disculpa por eso, no lo sabía. Edit: tengo que esperar 3 minutos.

kevin kevin
7 ene 2011 21:26:56

@Rarst, todo listo.

kevin kevin
7 ene 2011 21:35:06
Mostrar los 5 comentarios restantes
0

Entonces, necesitaba extraer el término de una taxonomía conocida asignada a una página (como esta:

function register_prod_categoria() {
  register_taxonomy(
     'prod-categoria',
     array( 'produtos', 'page' ),

(produtos siendo un tipo de entrada personalizado, solo para información.)).

Intenté varias cosas, entre ellas, esto: get_terms('prod-categoria','') Esto funciona, pero me da todo sobre mi taxonomía prod-categoria, que no es lo que necesitaba.

Luego, como se explica en el codex, hay dos parámetros (interesantes para mí) disponibles para get_terms(): child_of y parent. Esto sonaba perfecto, así que probé: get_terms('prod-categoria','child_of=marca'); y también get_terms('prod-categoria','parent=marca'), marca siendo un término padre (de la taxonomía personalizada prod-categoria) del cual quería extraer los términos hijos. Ambos me dieron resultados vacíos. También probé con el nombre Marca y el slug marca, nada.

La solución con la que terminé es esta: $tt = the_title('','',false);. Estoy obteniendo el título de la página para usarlo como parámetro después: $posts = posts_search ('produtos',array('prod-categoria'=>$tt,'prod-cols'=>'5-C-P-F-NF-P')); if($posts) { echo "<table class=\"table-marca\">"; foreach($posts as $post) { ... }

Por cierto, la función posts_search() (la encontré en http://wordpress.stackexchange.com o http://stackoverflow.com si no me equivoco, no recuerdo con seguridad) permite hacer consultas en múltiples taxonomías.

Estoy muy de acuerdo en que está lejos de ser perfecto, el título de la página tiene que ser igual al nombre de la taxonomía, pero en mi caso funciona. Muchas gracias a Rarst y Piet por intentar ayudar.

7 ene 2011 21:33:45
0

Si ya estás en la página de categoría/término, puedes llamar a get_queried_object(); antes de ejecutar tu consulta personalizada para obtener información de la categoría/término, incluyendo el slug.

5 may 2012 01:23:31