wp_filter_oembed_iframe_title_attribute

函数
wp_filter_oembed_iframe_title_attribute ( $result, $data, $url )
参数
  • (string) $result The oEmbed HTML result.
    Required:
  • (object) $data A data object result from an oEmbed provider.
    Required:
  • (string) $url The URL of the content to be embedded.
    Required:
返回值
  • (string) The filtered oEmbed result.
定义位置
相关方法
wp_filter_oembed_resultwp_filter_pre_oembed_resultthe_title_attributewp_oembed_register_routethe_embed_site_title
引入
5.2.0
弃用
-

wp_filter_oembed_iframe_title_attribute:这个过滤器用于修改oEmbed iframe的标题属性。它将标题属性作为一个参数,并返回修改后的标题属性。

过滤给定的oEmbed HTML,以确保iframes有一个标题属性。

function wp_filter_oembed_iframe_title_attribute( $result, $data, $url ) {
	if ( false === $result || ! in_array( $data->type, array( 'rich', 'video' ), true ) ) {
		return $result;
	}

	$title = ! empty( $data->title ) ? $data->title : '';

	$pattern = '`<iframe([^>]*)>`i';
	if ( preg_match( $pattern, $result, $matches ) ) {
		$attrs = wp_kses_hair( $matches[1], wp_allowed_protocols() );

		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'];
	}

	/**
	 * Filters the title attribute of the given oEmbed HTML iframe.
	 *
	 * @since 5.2.0
	 *
	 * @param string $title  The title attribute.
	 * @param string $result The oEmbed HTML result.
	 * @param object $data   A data object result from an oEmbed provider.
	 * @param string $url    The URL of the content to be embedded.
	 */
	$title = apply_filters( 'oembed_iframe_title_attribute', $title, $result, $data, $url );

	if ( '' === $title ) {
		return $result;
	}

	if ( isset( $attrs['title'] ) ) {
		unset( $attrs['title'] );
		$attr_string = implode( ' ', 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 );
}

常见问题

FAQs
查看更多 >