Як автоматично додати 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');