REST API: Fix PHP warnings when `get_theme_support( 'post-formats' )` is not an array.

If `add_theme_support( 'post-formats' )` is called with no additional
arguments, then `get_theme_support( 'post-formats' )` returns `true` rather
than an array of supported formats.  Avoid generating PHP warnings in this
situation.

Props dreamon11, ChopinBach.
Fixes #39293.

Built from https://develop.svn.wordpress.org/trunk@39620


git-svn-id: http://core.svn.wordpress.org/trunk@39560 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
James Nylen 2016-12-20 00:56:44 +00:00
parent c7988f1f03
commit d515e20a1a
2 changed files with 8 additions and 2 deletions

View File

@ -1923,10 +1923,16 @@ class WP_REST_Posts_Controller extends WP_REST_Controller {
case 'post-formats': case 'post-formats':
$supports_formats = get_theme_support( 'post-formats' ); $supports_formats = get_theme_support( 'post-formats' );
// Force to an array. Supports formats can return true even if empty in some cases.
$supports_formats = is_array( $supports_formats ) ? array_values( $supports_formats[0] ) : array();
$supported_formats = array_merge( array( 'standard' ), $supports_formats );
$schema['properties']['format'] = array( $schema['properties']['format'] = array(
'description' => __( 'The format for the object.' ), 'description' => __( 'The format for the object.' ),
'type' => 'string', 'type' => 'string',
'enum' => array_merge( array( 'standard' ), $supports_formats ? array_values( $supports_formats[0] ) : array() ), 'enum' => $supported_formats,
'context' => array( 'view', 'edit' ), 'context' => array( 'view', 'edit' ),
); );
break; break;

View File

@ -4,7 +4,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '4.8-alpha-39619'; $wp_version = '4.8-alpha-39620';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.