Получает альтернативный текст из XMP-метаданных файла изображения.
Получает альтернативный текст из XMP-метаданных файла изображения.
Ищет поле Iptc4xmpCore:AltTextAccessibility. Если оно содержит несколько языковых вариантов, выбирает первый подходящий в таком порядке:
fr_FR.ru.x-default.При загрузке изображения WordPress использует этот текст для заполнения поля Alt в медиабиблиотеке.
Функция получает текст непосредственно из файла, а не из метаполя _wp_attachment_image_alt. Она не сохраняет найденный текст в БД.
Чтобы получить Alt-текст, сохранённый для вложения в медиабиблиотеке, используйте get_post_meta():
$alt_text = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true );
На фронтенде файл функции может потребоваться подключить вручную:
require_once ABSPATH . `wp-admin/includes/image.php`.
Хуков нет.
ВозвращаетСтроку.
строку - найденный альтернативный текст.'' - если файл не удалось прочитать, XMP-метаданные отсутствуют или повреждены, нужное поле не найдено либо подходящего языкового варианта нет.wp_get_image_alttext( $file );
require_once ABSPATH . 'wp-admin/includes/image.php';
$file = wp_get_original_image_path( 123 );
if ( $file ) {
$alt_text = wp_get_image_alttext( $file );
echo esc_html( $alt_text );
}| С версии 7.0.0 | Введена. |
function wp_get_image_alttext( $file ) {
$alt_text = '';
$img_contents = file_get_contents( $file );
if ( false === $img_contents ) {
return $alt_text;
}
// Find the start and end positions of the XMP metadata.
$xmp_start = strpos( $img_contents, '<x:xmpmeta' );
$xmp_end = strpos( $img_contents, '</x:xmpmeta>' );
if ( false === $xmp_start || false === $xmp_end ) {
// No XMP metadata found.
return $alt_text;
}
// Extract the XMP metadata from the JPEG contents
$xmp_data = substr( $img_contents, $xmp_start, $xmp_end - $xmp_start + 12 );
// Parse the XMP metadata using DOMDocument.
$doc = new DOMDocument();
if ( false === $doc->loadXML( $xmp_data ) ) {
// Invalid XML in metadata.
return $alt_text;
}
// Instantiate an XPath object, used to extract portions of the XMP.
$xpath = new DOMXPath( $doc );
// Register the relevant XML namespaces.
$xpath->registerNamespace( 'x', 'adobe:ns:meta/' );
$xpath->registerNamespace( 'rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' );
$xpath->registerNamespace( 'Iptc4xmpCore', 'http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/' );
$node_list = $xpath->query( '/x:xmpmeta/rdf:RDF/rdf:Description/Iptc4xmpCore:AltTextAccessibility' );
if ( $node_list && $node_list->count() ) {
$node = $node_list->item( 0 );
// Get the site's locale.
$locale = get_locale();
// Get the alt text accessibility alternative most appropriate for the site language.
// There are 3 possibilities:
//
// 1. there is an rdf:li with an exact match on the site locale.
// 2. there is an rdf:li with a partial match on the site locale (e.g., site locale is en_US and rdf:li has @xml:lang="en").
// 3. there is an rdf:li with an "x-default" lang.
//
// Evaluate in that order, stopping when we have a match.
$alt_text = $xpath->evaluate( "string( rdf:Alt/rdf:li[ @xml:lang = '{$locale}' ] )", $node );
if ( ! $alt_text ) {
$alt_text = $xpath->evaluate( 'string( rdf:Alt/rdf:li[ @xml:lang = "' . substr( $locale, 0, 2 ) . '" ] )', $node );
if ( ! $alt_text ) {
$alt_text = $xpath->evaluate( 'string( rdf:Alt/rdf:li[ @xml:lang = "x-default" ] )', $node );
}
}
}
return $alt_text;
}
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Функция WordPress: is_sitemap() | 0 | 16.04 | 20-08-2026 |
| 2 | Функция WordPress: wp_verify_fast_hash() | 0 | 10 | 23-08-2026 |
| 3 | Функция WordPress: wp_get_ability() | 0 | 19.09 | 19-07-2026 |
| 4 | Функция WordPress: wp_add_crossorigin_attributes() | 0 | 19.09 | 20-08-2026 |
| 5 | Функция WordPress: has_translation() | 0 | 10 | 23-08-2026 |
| 6 | Функция WordPress: wp_set_script_module_translations() | 0 | 10 | 23-08-2026 |
| 7 | Функция WordPress: restore_current_locale() | 0 | 10 | 26-08-2026 |
| 8 | Функция WordPress: wp_trash_comment() | 0 | 10 | 26-08-2026 |
| 9 | Функция WordPress: wpdb::_real_escape() | 0 | 18.33 | 04-08-2026 |
| 10 | Функция WordPress: verify_file_signature() | 0 | 10 | 27-07-2026 |