Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

recuperar términos de taxonomía sólo para post de una determinada categoría

Estas en el tema de recuperar términos de taxonomía sólo para post de una determinada categoría en el foro de WordPress en Foros del Web. get_terms(), con 'hide_empty' => 1, me trae todos los términos que estén asociados a al menos un post... de cualquier categoría. Explicándolo en castellano, lo ...
  #1 (permalink)  
Antiguo 18/10/2011, 11:27
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 10 meses
Puntos: 535
recuperar términos de taxonomía sólo para post de una determinada categoría

get_terms(), con 'hide_empty' => 1, me trae todos los términos que estén asociados a al menos un post... de cualquier categoría.

Explicándolo en castellano, lo que busco es listar los tipos (taxonomía) de alojamiento (custom post type) que existan para UNA ciudad (categoría):


Alojamientos de la Ciudad X
  • Todos (5)
  • Cabaña (1)
  • Camping (1)
  • Hotel (2)
  • Posada (1)

Ahora me trae todos los tipos de alojamientos de todas las ciudades.

Alguna idea?
__________________
...___...
  #2 (permalink)  
Antiguo 19/10/2011, 10:56
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 10 meses
Puntos: 535
Respuesta: recuperar términos de taxonomía sólo para post de una determinada categorí

Bien, no sé si esto estará del todo OK, pero está funcionando... así que por el memento me sirve

Código:
function my_custom_get_terms( $my_tax, $my_category ){
	global $wpdb;
	global $pagename;
	
	$query = "SELECT Count(wp_posts.ID) AS my_term_count, wp_term_taxonomy.term_taxonomy_id, wp_term_taxonomy.taxonomy, wp_terms.name, wp_terms.term_id, wp_terms.slug AS term_slug, wp_terms.term_group, wp_terms_1.slug
	FROM (((((wp_term_relationships INNER JOIN wp_term_taxonomy ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) INNER JOIN wp_terms ON wp_term_taxonomy.term_id = wp_terms.term_id) INNER JOIN wp_posts ON wp_term_relationships.object_id = wp_posts.ID) INNER JOIN wp_term_relationships AS wp_term_relationships_1 ON wp_posts.ID = wp_term_relationships_1.object_id) INNER JOIN wp_term_taxonomy AS wp_term_taxonomy_1 ON wp_term_relationships_1.term_taxonomy_id = wp_term_taxonomy_1.term_taxonomy_id) INNER JOIN wp_terms AS wp_terms_1 ON wp_term_taxonomy_1.term_id = wp_terms_1.term_id
	GROUP BY wp_term_taxonomy.term_taxonomy_id, wp_term_taxonomy.taxonomy, wp_terms.name, wp_terms.term_id, wp_terms.slug, wp_terms.term_group, wp_terms_1.slug
	HAVING (((wp_term_taxonomy.taxonomy)='$my_tax') AND ((wp_terms_1.slug) = '$my_category'))
	ORDER BY Count(wp_posts.ID) DESC";

	$datos = $wpdb->get_results($query, OBJECT);
	echo "<ul>";
	$total = 0;
	foreach ( $datos as $dato ) {
		echo '<li><a href="' . get_bloginfo('url') . '/' . get_parent_page_slug() . '/' . $pagename . '/?tipo=' . $dato->term_slug . '">' . $dato->name . ' (' . $dato->my_term_count . ')</a></li>';
		$total += $dato->my_term_count;
	}
	echo '<li><a href="' . get_bloginfo('url') . '/' . get_parent_page_slug() . '/' . $pagename . '/">Todos (' . $total . ')</a></li>';
	echo "</ul>";
}



my_custom_get_terms( 'tipo', get_parent_page_slug() );

Edito: Sé acerca del uso de $wpdb->tabla para sustituir el prefijo wp_tabla, pero al implementarlo me dio problemas y que quedó así al menos momentáneamente.
__________________
...___...

Última edición por AlZuwaga; 19/10/2011 a las 11:05 Razón: aclaración

Etiquetas: post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:17.