Вопрос или проблема
У меня есть веб-сайт с более чем 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')); ?>">
Пояснение к коду:
-
attachment_url_to_postid: Эта функция позволяет получить ID вложения (attachment ID), используя URL изображения. Она будет искать в базе данных и возвращать ID, если изображение найдено.
-
get_post_meta: После того как мы получили ID вложения, мы можем использовать эту функцию для того, чтобы извлечь текст
alt
, который хранится в метаданных поста. -
esc_attr: Этот метод экранирует строку, чтобы она была безопасной для вставки в HTML атрибут.
Установка функции:
Чтобы использовать эту функцию, добавьте её в файл functions.php
вашей активной темы в WordPress. После этого вы сможете легко вставлять изображения с загруженными атрибутами alt
, как показано выше.
Заключение:
Таким образом, возможно сэкономить время, автоматизировав процесс добавления атрибутов alt
для изображений на вашем сайте WordPress. Не забудьте протестировать функцию на разных страницах, чтобы убедиться, что она работает корректно. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.