NeXan87
@NeXan87
Фрилансер

Как организовать вывод заголовка изображения в WordPress?

Всем привет! Использую скрипт lightbox для увеличения изображений. Для работы кода в файле functions.php прописан код, который вставляет "title" в тег "a". Однако втавляет он не заголовок изображения, а статьи. В результате чего при увеличении изображений под ними показывается одно и то же название.
Сам код:
function addrellightbox($content) {
       global $post;
       $pattern ="/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
       $replacement = '<a$1href=$2$3.$4$5 rel="lightbox" class="lightbox" title="'.$post->post_title.'"$6>';
       $content = preg_replace($pattern, $replacement, $content);
       return $content;
add_filter('the_content', 'addrellightbox');
}


Код HTML после преобразования:
<a href="/full.jpg" rel="lightbox" class="lightbox" title="Заголовок статьи">
<img class="wp-image" title="Заголовок изображения" src="/640x480.jpg" alt="Заголовок изображения" width="640" height="480">
</a>
  • Вопрос задан
  • 862 просмотра
Решения вопроса 2
BizDirect
@BizDirect
Ковыряю WordPress в рабочее время...
Ну так все правильно, у вас и стоит заголовок статьи: $post->post_title
Насколько я помню, lightbox-у не нужны подобные танцы с бубном, он сам rel подставляет. Если же нет, то достаточно указать класс при вставке картинки в редакторе, там же и title прописывается. Если он присутствует, то ВП сам его в тег img вставляет. На счет анкора не уверен.

А так-то вашу функцию нужно доделывать, тащить заголовок картинки по ИД аттачмента и подставлять в тайтл анкора.
Ответ написан
NeXan87
@NeXan87 Автор вопроса
Фрилансер
Решено. Нашел другой код, который прописал вместо прежнего:
add_filter('the_content', 'addrellightbox');
function addrellightbox($content) {
       global $post;
	$pattern = "/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)title=('|\")(.*?)('|\")(.*?)<\/a>/i";
    $replacement = '<a$1href=$2$3.$4$5 title=$8$9$10 rel="lightbox[%LIGHTID%]"$6class="lightbox">$7title=$8$9$10$11</a>';
    $content = preg_replace($pattern, $replacement, $content);
    $content = str_replace("%LIGHTID%", $post->ID, $content);
    return $content;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы