get_term_custom: Source code

By the Web Warlock, Wednesday, 4/Aug/2010 14:19

<?php function get_term_custom( $term_id , $key = NULL , $args = NULL ){
	$args = wp_parse_args( $args, array( 'exclude' => array() , 'unfiltered' => false , 'force_query' => false ) ) ;
	if( !isset( $force_query ) ) $force_query = false;
	if( !$force_query ){
		list( $raw_results , $results) = array( wp_cache_get( $term_id , 'termmeta' ) , array() );
		if( $raw_results ) {
			foreach( $raw_results as $result ){
				if( !in_array( $result->meta_key , $args['exclude'] ) ) $results[] = $result;
			};
		};
	};
	if( ( $force_query ) || ( empty ( $raw_results ) ) ) {
		global $wpdb ;
		$table = $wpdb->prefix . "termmeta" ;
		$query = $wpdb->prepare( "SELECT * FROM $table WHERE term_id=%d" , $term_id , (string)$key ) ;
		if( NULL !== $key ){
			$query .= $wpdb->prepare( " AND meta_key=%s" , (string)$key ) ;
		};
		if( $args['exclude'] ){
			if( is_array( $args['exclude'] ) ){
				$args['exclude'] = '\'' . join( '\', \'' , $args['exclude'] ) . '\'' ;
			} else {
				$args['exclude'] = '\'' . (string)$args['exclude'] . '\'' ;
			};
			$query .= ( " AND meta_key NOT IN (" . $args['exclude'] . ")" ) ;
		} ;
		$results = $wpdb->get_results( $query ) ;
	};
	$results = apply_filters( 'get_term_custom' , $results ) ;
	return $results ;
} ; ?>

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment