[wp-hackers] Taxnomy Q: All categories (posts>0) with posts in term X of another taxonomy

Dion Hulse (dd32) wordpress at dd32.id.au
Sun Nov 1 08:36:30 UTC 2009


On Thu, 22 Oct 2009 21:43:57 +1100, Austin Matzko <if.website at gmail.com>  
wrote:
> Unless I misunderstand what you want, wouldn't the following work?
>
> $term = get_term_by('name', 'SomeTag', 'post_tag');
> if ( ! empty( $term->term_id ) ) {
> 	$cat_ids = (array) wp_get_object_terms(get_objects_in_term(
> array($term->term_id), array('post_tag')), array('category'),
> array('fields' => 'ids'));
> }

Finally got back to implementing this part of the project, That pretty  
much worked, With one gotcha.. get_objects_in_term() doesnt care what kind  
of object its returning, Could be an attachment, a post, a DRAFT post, or  
even a Trashed post..

I ended up splitting it up, and putting a query in between to filter it to  
valid post_ids.. Seems to work reasonably well


$term = get_term_by('name', 'SomeTag', 'post_tag');
if ( ! empty( $term->term_id ) ) {
	$ids = get_objects_in_term(array($term->term_id), array('post_tag'));
	global $wpdb;
	$ids = array_map('intval', $ids);
	$ids = implode(',', $ids);
	$ids = (array)$wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE ID  
IN($ids) AND post_type='post' AND post_status='publish'");
	
  	$cat_ids = (array) wp_get_object_terms($ids, array('category'),  
array('fields' => 'ids'));
}

So thanks Austin once again, Ended up saving me a heap of time.


More information about the wp-hackers mailing list