wordpress как изменить alt для img-s которые вернет content()

Нужно было чтобы картинки img, которые возвращает функция the_content(), в своем атрибуте alt содержали «заголовок публикации — фото 1», «заголовок публикации — фото 2» и т.д. соответсвенно для каждой картинки.

Заголовок публикации можно получить функцией — get_the_title()

the_content() — сразу отображает содержимое поста или записи в вашем шаблоне, но для получения и обработки нам нужна функция get_the_content()

Имея контент и необходимы заголовок нам нужно выполнить парсинг содержимого HTML, для изменения атрибута alt для картинок img я использовал DOMDocument и php-mbstring.

$alt_text = 'Заголовок статьи';
$dom = new DOMDocument;
$dom->loadHTML($doc);
$images = $dom->getElementsByTagName('img');
foreach ($images as $index => $image) {
    $new_alt = $alt_text.' - '.$index.' фото';
    $image->setAttribute('alt', $new_alt );
}
$doc = $dom->saveHTML();
function changeImgAltInContent($content, $alt_text, $start_count = 1)
{
    $content = apply_filters( 'the_content', $content );
    $content = str_replace( ']]>', ']]>', $content );

    $doc = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
    $dom = new DOMDocument;
    $dom->loadHTML($doc);
    $images = $dom->getElementsByTagName('img');

    foreach ($images as $index => $image) {
        $count = $index + $start_count;
        $new_alt = $alt_text.' - '.$count.' фото';
        $image->setAttribute('alt', $new_alt );
    }
    $doc = $dom->saveHTML();
    return $doc;
}

echo changeImgAltInContent(get_the_content(), get_the_title(), 2);

Вам также может понравиться

About the Author: Vladimir Kusakin

Hi. I am web developer. For the past 9 years, I've been developing applications for the web using mostly PHP and Python. About me

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *