Return false instead of WP_Error from get_term_by() if the term does not exist. Makes fetching a term by id consistent with slug and name. Props hakre. fixes #16464 #16717 for trunk

git-svn-id: http://svn.automattic.com/wordpress/trunk@17526 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2011-03-22 20:06:38 +00:00
parent a83a2842ea
commit ebecb8ffdf
2 changed files with 6 additions and 3 deletions

View File

@ -2190,7 +2190,7 @@ class WP_Query {
if ( !empty( $cat_query ) ) { if ( !empty( $cat_query ) ) {
$cat_query = reset( $cat_query ); $cat_query = reset( $cat_query );
$the_cat = get_term_by( $cat_query['field'], $cat_query['terms'][0], 'category' ); $the_cat = get_term_by( $cat_query['field'], $cat_query['terms'][0], 'category' );
if ( $the_cat && ! is_wp_error( $the_cat ) ) { if ( $the_cat ) {
$this->set( 'cat', $the_cat->term_id ); $this->set( 'cat', $the_cat->term_id );
$this->set( 'category_name', $the_cat->slug ); $this->set( 'category_name', $the_cat->slug );
} }
@ -2202,7 +2202,7 @@ class WP_Query {
if ( !empty( $tag_query ) ) { if ( !empty( $tag_query ) ) {
$tag_query = reset( $tag_query ); $tag_query = reset( $tag_query );
$the_tag = get_term_by( $tag_query['field'], $tag_query['terms'][0], 'post_tag' ); $the_tag = get_term_by( $tag_query['field'], $tag_query['terms'][0], 'post_tag' );
if ( $the_tag && ! is_wp_error( $the_tag ) ) { if ( $the_tag ) {
$this->set( 'tag_id', $the_tag->term_id ); $this->set( 'tag_id', $the_tag->term_id );
} }
unset( $the_tag ); unset( $the_tag );

View File

@ -889,7 +889,10 @@ function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw
$value = stripslashes($value); $value = stripslashes($value);
$field = 't.name'; $field = 't.name';
} else { } else {
return get_term( (int) $value, $taxonomy, $output, $filter); $term = get_term( (int) $value, $taxonomy, $output, $filter);
if ( is_wp_error( $term ) )
$term = false;
return $term;
} }
$term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) ); $term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) );