diff --git a/wp-includes/class-oembed.php b/wp-includes/class-oembed.php
index e5f9989a3f..f933fe8ed8 100644
--- a/wp-includes/class-oembed.php
+++ b/wp-includes/class-oembed.php
@@ -227,25 +227,31 @@ class WP_oEmbed {
* @return bool|string False on error, otherwise the HTML needed to embed.
*/
function data2html( $data, $url ) {
- if ( !is_object($data) || empty($data->type) )
+ if ( ! is_object( $data ) || empty( $data->type ) )
return false;
+ $return = false;
+
switch ( $data->type ) {
case 'photo':
- if ( empty($data->url) || empty($data->width) || empty($data->height) )
- return false;
+ if ( empty( $data->url ) || empty( $data->width ) || empty( $data->height ) )
+ break;
+ if ( ! is_string( $data->url ) || ! is_numeric( $data->width ) || ! is_numeric( $data->height ) )
+ break;
- $title = ( !empty($data->title) ) ? $data->title : '';
+ $title = ! empty( $data->title ) && is_string( $data->title ) ? $data->title : '';
$return = '
';
break;
case 'video':
case 'rich':
- $return = ( !empty($data->html) ) ? $data->html : false;
+ if ( ! empty( $data->html ) && is_string( $data->html ) )
+ $return = $data->html;
break;
case 'link':
- $return = ( !empty($data->title) ) ? '' . esc_html($data->title) . '' : false;
+ if ( ! empty( $data->title ) && is_string( $data->title ) )
+ $return = '' . esc_html( $data->title ) . '';
break;
default: