Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Функция WordPress: wp_get_image_alttext()

Дата публикации: 23-08-2026 07:52:02

Получает альтернативный текст из 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 );
$file(строка) (обязательный)
Путь к файлу изображения. Функция читает файл целиком.
Примеры#1 Получение встроенного Alt-текста изображения
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 Введена.
Код wp_get_image_alttext() wp get image alttext WP 7.1
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()016.0420-08-2026
2Функция WordPress: wp_verify_fast_hash()01023-08-2026
3Функция WordPress: wp_get_ability()019.0919-07-2026
4Функция WordPress: wp_add_crossorigin_attributes()019.0920-08-2026
5Функция WordPress: has_translation()01023-08-2026
6Функция WordPress: wp_set_script_module_translations()01023-08-2026
7Функция WordPress: restore_current_locale()01026-08-2026
8Функция WordPress: wp_trash_comment()01026-08-2026
9Функция WordPress: wpdb::_real_escape()018.3304-08-2026
10Функция WordPress: verify_file_signature()01027-07-2026

Классификация: Пресс-релизы. Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 20. Источник: wp-kama.ru.