mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-06-28 14:20:15 +00:00
Embeds: Ensure that the title attribute is set correctly on embeds.
Props xknown. git-svn-id: https://develop.svn.wordpress.org/trunk@47947 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -806,11 +806,24 @@ function wp_filter_oembed_iframe_title_attribute( $result, $data, $url ) {
|
||||
|
||||
$title = ! empty( $data->title ) ? $data->title : '';
|
||||
|
||||
$pattern = '`<iframe[^>]*?title=(\\\\\'|\\\\"|[\'"])([^>]*?)\1`i';
|
||||
$has_title_attr = preg_match( $pattern, $result, $matches );
|
||||
$pattern = '`<iframe([^>]*)>`i';
|
||||
if ( preg_match( $pattern, $result, $matches ) ) {
|
||||
$attrs = wp_kses_hair( $matches[1], wp_allowed_protocols() );
|
||||
|
||||
if ( $has_title_attr && ! empty( $matches[2] ) ) {
|
||||
$title = $matches[2];
|
||||
foreach ( $attrs as $attr => $item ) {
|
||||
$lower_attr = strtolower( $attr );
|
||||
if ( $lower_attr === $attr ) {
|
||||
continue;
|
||||
}
|
||||
if ( ! isset( $attrs[ $lower_attr ] ) ) {
|
||||
$attrs[ $lower_attr ] = $item;
|
||||
unset( $attrs[ $attr ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! empty( $attrs['title']['value'] ) ) {
|
||||
$title = $attrs['title']['value'];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -829,11 +842,11 @@ function wp_filter_oembed_iframe_title_attribute( $result, $data, $url ) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
if ( $has_title_attr ) {
|
||||
// Remove the old title, $matches[1]: quote, $matches[2]: title attribute value.
|
||||
$result = str_replace( ' title=' . $matches[1] . $matches[2] . $matches[1], '', $result );
|
||||
if ( isset( $attrs['title'] ) ) {
|
||||
unset( $attrs['title'] );
|
||||
$attr_string = join( ' ', wp_list_pluck( $attrs, 'whole' ) );
|
||||
$result = str_replace( $matches[0], '<iframe ' . trim( $attr_string ) . '>', $result );
|
||||
}
|
||||
|
||||
return str_ireplace( '<iframe ', sprintf( '<iframe title="%s" ', esc_attr( $title ) ), $result );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user