Intereting Posts
Что я могу ожидать при переходе от размещенного (WordPress.com) блога к одному, размещенному на странице. WordPress Multisite – может ли 2 домена совместно использовать базу данных пользователей? Перенаправление на текущую страницу после входа в WordPress стиль шрифта не работает в домене Объединение обновленного сайта-разработчика с живым сайтом при правильном выполнении заказов Пользовательский шаблон страницы для боковой панели / виджета детская тема textdomain: не загружается ВСЕ! Неправильное уведомление post_status после wp_insert_post_data Сохранить jQuery UI Sortable в WordPress Где добавить URL-адрес другого сайта для нашего сообщения в WordPress Заполнить список слайд-шоу изображений с изображений на странице WordPress? простой пользовательский запрос плагина Включить вложенные комментарии в тему Изменить пароль для возврата пароля, возвращенный wp_lostpassword_url () через плагин Строгое правило Ошибка загрузки bootstrap navwalker

Добавить галерею id в rel атрибут wp_get_attachment_link

Теперь у меня есть этот фрагмент в моих functions.php

/** * Add rel to links. */ function add_rel_to_gallery($link) { return str_replace('<a href=', '<a data-fancybox="true" rel="group" href=', $link); } add_filter( 'wp_get_attachment_link', 'add_rel_to_gallery' ); 

Каждая ссылка в галерее имеет rel = "group" , но на самом деле я хочу получить что-то вроде этого:

 rel="group-$gallery-id" 

Как это сделать?

Что такое идентификатор галереи?

 <div id="gallery-1" class="gallery galleryid-1457 gallery-columns-5 gallery-size-thumbnail"> <dl class="gallery-item"> <dt class="gallery-icon landscape"> <a data-fancybox="true" rel="group" href="smt.jpg"><img src="smt.jpg" class="attachment-thumbnail" alt="ult-collection_sh10154" height="150" width="150"></a> </dt></dl><dl class="gallery-item"> <dt class="gallery-icon landscape"> <a data-fancybox="true" rel="group" href="smt.jpg"><img src="smt.jpg" class="attachment-thumbnail" alt="ult-collection_sh10153_1" height="150" width="150"></a> </dt> </dl> </div> 

В этой выходной галерее id равен 1457.

Мне нужен идентификатор галереи (или что-то, что может сгруппировать изображения из одной галереи в одну группу rel) для создания групп fancybox:

Примечание. Идентификаторы одноразового использования и применяются только к одному элементу. Галереи создаются из элементов, которые имеют одинаковое значение атрибута «data-fancybox-group» или «rel».

через http://fancyapps.com/fancybox/#examples

Для @s_ha_dum:

 function add_rel_to_gallery($link, $id) { return str_replace('<a href=', '<a data-fancybox="true" rel="group-'.$id.'" href=', $link); } add_filter( 'wp_get_attachment_link', 'add_rel_to_gallery', 10, 2 ); 

Вывод:

 <div id="gallery-1" class="gallery galleryid-1457 gallery-columns-5 gallery-size-thumbnail"><dl class="gallery-item"> <dt class="gallery-icon landscape"> <a data-fancybox="true" rel="group-1461" href="http://img.wordpressask.com/links/ult-collection_sh10153_1.jpeg"><img src="http://img.wordpressask.com/links/ult-collection_sh10153_1-150x150.jpeg" class="attachment-thumbnail" alt="ult-collection_sh10153_1" height="150" width="150"></a> </dt></dl><dl class="gallery-item"> <dt class="gallery-icon landscape"> <a data-fancybox="true" rel="group-1467" href="http://img.wordpressask.com/links/ult-collection_sh10348_1.jpeg"><img src="http://img.wordpressask.com/links/ult-collection_sh10348_1-150x150.jpeg" class="attachment-thumbnail" alt="ult-collection_sh10348_1" height="150" width="150"></a> </dt></dl> </div> 

Этот фильтр передает больше аргументов, чем вы используете .

 return apply_filters( 'wp_get_attachment_link', "<a href='$url'>$link_text</a>", $id, $size, $permalink, $icon, $text ); 

Второй из них – тот, который вам нужен. Поэтому вам нужно изменить обратный вызов, чтобы использовать второй параметр, и изменить свой add_filter чтобы запросить его, установив четвертый аргумент add_filter 2.

 function add_rel_to_gallery($link, $id) { return str_replace('<a href=', '<a data-fancybox="true" rel="group-'.$id.'" href=', $link); } add_filter( 'wp_get_attachment_link', 'add_rel_to_gallery', 10, 2 ); 

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

 function get_id($inc = false) { static $id; if ($inc) { $id++; } return $id; } function replace($link) { $id = get_id(); return str_replace('<a href=', '<a data-fancybox="true" rel="group-'.$id.'" href=', $link); } add_filter( 'post_gallery', function() { get_id(true); add_filter('wp_get_attachment_link','replace'); } ); 

Правильный ответ, вероятно, заключается в использовании крюка post_gallery для захвата остальной части post_gallery галереи или просто переписывания post_gallery галереи одним из ваших собственных .