WP_REST_URL_Details_Controller::get_icon
Parses the site icon from the provided HTML.
Метод класса: WP_REST_URL_Details_Controller{}
Хуков нет.
Возвращает
Строку. The icon URI on success. Empty string if not found.
Использование
// private - только в коде основоного (родительского) класса $result = $this->get_icon( $html, $url );
- $html(строка) (обязательный)
- The HTML from the remote website at URL.
- $url(строка) (обязательный)
- The target website URL.
Список изменений
| С версии 5.9.0 | Введена. |
Код WP_REST_URL_Details_Controller::get_icon() WP REST URL Details Controller::get icon WP 6.9.1
private function get_icon( $html, $url ) {
// Grab the icon's link element.
$pattern = '#<link\s[^>]*rel=(?:[\"\']??)\s*(?:icon|shortcut icon|icon shortcut)\s*(?:[\"\']??)[^>]*\/?>#isU';
preg_match( $pattern, $html, $element );
if ( empty( $element[0] ) || ! is_string( $element[0] ) ) {
return '';
}
$element = trim( $element[0] );
// Get the icon's href value.
$pattern = '#href=([\"\']??)([^\" >]*?)\\1[^>]*#isU';
preg_match( $pattern, $element, $icon );
if ( empty( $icon[2] ) || ! is_string( $icon[2] ) ) {
return '';
}
$icon = trim( $icon[2] );
// If the icon is a data URL, return it.
$parsed_icon = parse_url( $icon );
if ( isset( $parsed_icon['scheme'] ) && 'data' === $parsed_icon['scheme'] ) {
return $icon;
}
// Attempt to convert relative URLs to absolute.
if ( ! is_string( $url ) || '' === $url ) {
return $icon;
}
$parsed_url = parse_url( $url );
if ( isset( $parsed_url['scheme'] ) && isset( $parsed_url['host'] ) ) {
$root_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . '/';
$icon = WP_Http::make_absolute_url( $icon, $root_url );
}
return $icon;
}