Як автоматично додати alt до завантаженого зображення

WordPress за замовчуванням під час завантаження зображень не заповнює поле “Атрибут alt” і при вставці такого зображення в контент цей атрибут буде порожнім.

Бажано, щоб у атрибуті alt був текст, що описує картинку. Це потрібно для людей, у яких з якоїсь причини картинка не змогла відобразитися (тоді замість неї виведеться текст з атрибута alt) і для СЕО, звичайно, оскільки це один із способів дати зрозуміти Пошуковим системам, що зображено на фото.

Код нижче вирішує цю проблему. При створенні запису та виборі зображення з медіабібліотеки для вставки в контент поле під alt (якщо порожнє) буде заповнене на основі title автоматично.

Вставте код у плагіна .

/**
 * Заповнює поле для атрибута alt на основі заголовка зображення при його вставці в контент посту.
 *
 * @param array $response
 *
 * @return array
 */
function change_empty_alt_to_title( $response ) {
	if ( ! $response['alt'] ) {
		$response['alt'] = sanitize_text_field( $response['title'] );
	}

	return $response;
}

add_filter( 'wp_prepare_attachment_for_js', 'change_empty_alt_to_title');

Перевагою цього способу є те, що інформацію ми динамічно підміняємо саме під час вибору та вставки зображення в Запис, а значить вона не зберігається в базі даних, займаючи місце.

Через фільтр проходять подібні дані (вміст змінної $response):

Array
(
	[id] => 291
	[title] => насіннєва картопля в коробках
	[filename] => насіннєва-картопля-в-коробках.jpg
	[url] => http://wp-test.ru/wp-content/uploads/2019/02/насіннєва-картопля-в-коробках.jpg
	[link] => http://wp-test.ru/%d1%80%d0%b5%d0%ba%d0%bb%d0%b0%d0%bc%d0%b0-4/%d1%81 %d0%b5%d0%bc%d0%b5%d0%bd%d0%bd%d0%be%d0%b9-%d0%ba%d0%b0%d1%80%d1%82%d0%be% d1%84%d0%b5%d0%bb%d1%8c-%d0%b2-%d0%ba%d0%be%d1%80%d0%be%d0%b1%d0%ba%d0%b0% d1%85/
	[alt] =>
	[author] => 1
	[description] =>
	 =>
	[name] => %d1%81%d0%b5%d0%bc%d0%b5%d0%bd%d0%bd%d0%be%d0%b9-%d0%ba%d0%b0%d1%80 %d1%82%d0%be%d1%84%d0%b5%d0%bb%d1%8c-%d0%b2-%d0%ba%d0%be%d1%80%d0%be%d0%b1 %d0%ba%d0%b0%d1%85
	[status] => inherit
	[uploadedTo] => 253
	[date] => 1553934323000
	[modified] => 1553934323000
	[menuOrder] => 0
	[mime] => image/jpeg
	[type] => image
	[subtype] => jpeg
	[icon] => http://wp-test.ru/wp-includes/images/media/default.png
	[dateFormatted] => 30.03.2019
	[nonces] => Array
		(
			[update] => 1b5fa93d47
			[delete] => ac1bd4e05d
			[edit] => 1cfee6cba3
		)

	[editLink] => http://wp-test.ru/wp-admin/post.php?post=291&action=edit
	[meta] =>
	[authorName] => campusboy
	[uploadedToLink] => http://wp-test.ru/wp-admin/post.php?post=253&action=edit
	[uploadedToTitle] => Реклама 4
	[filesizeInBytes] => 41842
	[filesizeHumanReadable] => 41 KB
	[context] =>
	[height] => 451
	[width] => 600
	[orientation] => landscape
	[sizes] => Array
		(
			[thumbnail] => Array
				(
					[height] => 150
					[width] => 150
					[url] => http://wp-test.ru/wp-content/uploads/2019/02/насіннєва-картопля-в-коробках-150x150.jpg
					[orientation] => landscape
				)

			[medium] => Array
				(
					[height] => 226
					[width] => 300
					[url] => http://wp-test.ru/wp-content/uploads/2019/02/насіннєва-картопля-в-коробках-300x226.jpg
					[orientation] => landscape
				)

			[full] => Array
				(
					[url] => http://wp-test.ru/wp-content/uploads/2019/02/насіннєва-картопля-в-коробках.jpg
					[height] => 451
					[width] => 600
					[orientation] => landscape
				)

		)

	[compat] => Array
		(
			[item] =>
			[meta] =>
		)

)

На основі цієї інформації можна не тільки змінювати alt, але і будь-які інші дані зображення під час його вставки в контент посту.

Один з кейсів, замість порожнього alt підставляти заголовок запису:

/**
 * Заповнює поле для атрибута alt на основі заголовка Записи у картинки при додаванні до контенту.
 *
 * @param array $response
 *
 * @return array
 */
function change_empty_alt_to_title( $response ) {
	if ( ! $response['alt'] ) {
		$response['alt'] = sanitize_text_field( $response['uploadedToTitle'] );
	}

	return $response;
}

add_filter( 'wp_prepare_attachment_for_js', 'change_empty_alt_to_title');

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *