Получить альтернативный текст, ссылаясь на источник изображения.

Вопрос или проблема

У меня есть веб-сайт с более чем 400 изображениями. С помощью плагина для таблиц я прошелся по всем изображениям и вручную добавил текст alt к каждому из них.

Проблема в том, что страницы построены с помощью конструктора страниц, и многие изображения были добавлены в текстовые блоки с использованием <img src="https://example.com/image-folder/image-name.jpg">, и поэтому текст alt не подтянулся автоматически.

Я пытаюсь избежать необходимости проходить через все страницы, находить код img, определять, какое это изображение, искать текст alt и вручную его вводить, снова!

Мне кажется, что должен быть способ сослаться на изображение в базе данных по img src, а затем получить текст alt из базы данных таким образом.

Я хотел бы написать функцию, которая будет находиться в файле функций, и я смогу вызывать её из текста alt. Что-то вроде get_alt_text():

<img src="https://example.com/image-folder/image-name.jpg" alt="<?php echo( get_alt_text() ); ?>">

Таким образом, я смогу просто вставить один кусочек текста в каждое изображение alt, что сэкономит массу времени.

Похоже, есть функции, которые могут помочь мне, но это немного больше, чем я полностью понимаю сейчас, и мне интересно, может ли кто-то хотя бы с уверенностью сказать, возможно это или нет.

Например, эта функция WordPress “attachment_url_to_postid”.

Или эта “wp_get_attachment_image_src” функция.

Мой план для функции заключается в следующем:

  • Получить img src
  • Сопоставить это с изображением в базе данных
  • Получить ID изображения и метаданные и т. д.
  • Выделить текст alt и вернуть его

Итак, мой вопрос в следующем:

  • Можете сказать мне, возможно ли это?
  • Еще лучше, укажите правильное направление.
  • И еще лучше! Покажите пример.

Спасибо за ваше время.

(Я опубликовал это на Stackoverflow, но никто не ответил, так что я пытаюсь здесь)

Вы добились успеха в этом? Я только что написал плагин, который выполняет именно эту работу. Это, по сути, задача cron, которая сканирует все ваши посты и страницы, чтобы создать внутренний индекс того, где находятся изображения. Затем он синхронизирует текст alt из вашей медиа-библиотеки с изображениями в вашем контенте. Он основан на коде из этого туториала: https://wp-tutorials.tech/refine-wordpress/filter-for-images-missing-alt-text/, но плагин строится на его основе, чтобы добавить возможность синхронизации. Существует ссылка на плагин с той страницы туториала.

Но… все упирается в интеграцию с конструктором страниц. В данный момент плагин поддерживает только интеграцию с Gutenberg и Classic-Edit. Мне нужно добавить интеграции с Elementor/Divi и т. д… это немного хлопотно, но это нужно сделать.

Ответ или решение

Да, эта задача вполне решаема. Вам действительно не нужно вручную проверять каждое изображение и вводить текст для атрибута alt. Можно использовать функции WordPress для автоматического получения текста alt по URL изображения. Ниже приведен пример, как можно реализовать эту функциональность в файле функций вашей темы.

Пример функции для получения атрибута alt по URL изображения:

function get_alt_text($img_src) {
    // Получение ID вложения по URL изображения
    $attachment_id = attachment_url_to_postid($img_src);

    // Проверка, найдено ли вложение
    if ($attachment_id) {
        // Получение текста alt
        $alt_text = get_post_meta($attachment_id, '_wp_attachment_image_alt', true);
        return $alt_text;
    }

    return '';
}

Использование функции в HTML-коде изображения:

Теперь, когда функция создана, вы можете использовать её в вашем HTML коде следующим образом:

<img src="https://example.com/image-folder/image-name.jpg" alt="<?php echo esc_attr(get_alt_text('https://example.com/image-folder/image-name.jpg')); ?>">

Пояснение к коду:

  1. attachment_url_to_postid: Эта функция позволяет получить ID вложения (attachment ID), используя URL изображения. Она будет искать в базе данных и возвращать ID, если изображение найдено.

  2. get_post_meta: После того как мы получили ID вложения, мы можем использовать эту функцию для того, чтобы извлечь текст alt, который хранится в метаданных поста.

  3. esc_attr: Этот метод экранирует строку, чтобы она была безопасной для вставки в HTML атрибут.

Установка функции:

Чтобы использовать эту функцию, добавьте её в файл functions.php вашей активной темы в WordPress. После этого вы сможете легко вставлять изображения с загруженными атрибутами alt, как показано выше.

Заключение:

Таким образом, возможно сэкономить время, автоматизировав процесс добавления атрибутов alt для изображений на вашем сайте WordPress. Не забудьте протестировать функцию на разных страницах, чтобы убедиться, что она работает корректно. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...