wp_update_term() should check if get_term() returned null.

props dlh.
fixes #31954.

git-svn-id: https://develop.svn.wordpress.org/trunk@32117 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2015-04-13 01:20:57 +00:00
parent b0d6757918
commit 3b6ff03136
2 changed files with 22 additions and 4 deletions

View File

@ -3365,16 +3365,22 @@ function wp_unique_term_slug($slug, $term) {
function wp_update_term( $term_id, $taxonomy, $args = array() ) {
global $wpdb;
if ( ! taxonomy_exists($taxonomy) )
return new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
if ( ! taxonomy_exists( $taxonomy ) ) {
return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy' ) );
}
$term_id = (int) $term_id;
// First, get all of the original args
$term = get_term ($term_id, $taxonomy, ARRAY_A);
$term = get_term( $term_id, $taxonomy, ARRAY_A );
if ( is_wp_error( $term ) )
if ( is_wp_error( $term ) ) {
return $term;
}
if ( ! $term ) {
return new WP_Error( 'invalid_term', __( 'Empty Term' ) );
}
// Escape data pulled from DB.
$term = wp_slash($term);

View File

@ -653,4 +653,16 @@ class Tests_Term_WpUpdateTerm extends WP_UnitTestCase {
_unregister_taxonomy( 'wptests_tax' );
}
/**
* @ticket 31954
*/
public function test_wp_update_term_with_null_get_term() {
$t = $this->factory->term->create( array( 'taxonomy' => 'category' ) );
$found = wp_update_term( $t, 'post_tag', array( 'slug' => 'foo' ) );
$this->assertWPError( $found );
$this->assertSame( 'invalid_term', $found->get_error_code() );
}
}