Changeset 50793
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php
r50567 r50793 95 95 $value = array(); 96 96 97 foreach ( $all_values as $row ) { 98 $value[] = $this->prepare_value_for_response( $row, $request, $args ); 97 if ( is_array( $all_values ) ) { 98 foreach ( $all_values as $row ) { 99 $value[] = $this->prepare_value_for_response( $row, $request, $args ); 100 } 99 101 } 100 102 } … … 281 283 $current_values = get_metadata( $meta_type, $object_id, $meta_key, false ); 282 284 $subtype = get_object_subtype( $meta_type, $object_id ); 285 286 if ( ! is_array( $current_values ) ) { 287 $current_values = array(); 288 } 283 289 284 290 $to_remove = $current_values; … … 378 384 $subtype = get_object_subtype( $meta_type, $object_id ); 379 385 380 if ( 1 === count( $old_value ) && $this->is_meta_value_same_as_stored_value( $meta_key, $subtype, $old_value[0], $value ) ) { 386 if ( is_array( $old_value ) && 1 === count( $old_value ) 387 && $this->is_meta_value_same_as_stored_value( $meta_key, $subtype, $old_value[0], $value ) 388 ) { 381 389 return true; 382 390 } -
trunk/tests/phpunit/tests/rest-api/rest-term-meta-fields.php
r49603 r50793 1287 1287 1288 1288 /** 1289 * @ticket 53099 1290 */ 1291 public function test_get_term_metadata_returning_false_does_not_cause_php_warnings() { 1292 add_filter( 'get_term_metadata', '__return_false', 11 ); 1293 1294 // No PHP warning during GET request. 1295 add_term_meta( self::$category_id, 'test_single', 'testvalue' ); 1296 $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/categories/%d', self::$category_id ) ); 1297 $response = rest_get_server()->dispatch( $request ); 1298 1299 // No PHP warning during POST request. 1300 $this->grant_write_permission(); 1301 $data = array( 1302 'meta' => array( 1303 'test_multi' => array( 'val1' ), 1304 ), 1305 ); 1306 $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/categories/%d', self::$category_id ) ); 1307 $request->set_body_params( $data ); 1308 $response = rest_get_server()->dispatch( $request ); 1309 1310 // No PHP warning during validation. 1311 register_meta( 1312 'term', 1313 'my_meta_key', 1314 array( 1315 'show_in_rest' => true, 1316 'single' => true, 1317 'type' => 'integer', 1318 ) 1319 ); 1320 $this->grant_write_permission(); 1321 $data = array( 1322 'meta' => array( 1323 'my_meta_key' => '1', // Set to a string. 1324 ), 1325 ); 1326 $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/categories/%d', self::$category_id ) ); 1327 $request->set_body_params( $data ); 1328 $response = rest_get_server()->dispatch( $request ); 1329 1330 remove_filter( 'get_term_metadata', '__return_false', 11 ); 1331 1332 $data = $response->get_data(); 1333 $this->assertSame( 0, $data['meta']['my_meta_key'] ); 1334 } 1335 1336 /** 1289 1337 * Internal function used to disable an insert query which 1290 1338 * will trigger a wpdb error for testing purposes.
Note: See TracChangeset
for help on using the changeset viewer.