Intereting Posts
форма выбора выбора всегда удаляет запрос sql Дисплей Некоторые тексты в определенной категории не все категории Проверка длины строки в поле области администрирования onblur с помощью jQuery Как добавить несколько избранных изображений для публикации / страницы без плагина Пользовательский тип сообщения – список сообщений на основе meta_key и отображение их по категориям таксономии CPT Срок действия RSS-ленты и Google Adsense get option options options Возвращает Call to undefined function of_get_option () Настройка пароля для потерянного пароля Вызов меню WordPress за пределами игнорирует пользовательский пункт меню Установите количество продукта woocommerce на странице посещений Зачем использовать иерархические таксономии вместо многих таможенных таксономий? Пользовательская тема Bootstrap Альтернатива wp_get_nav_menu_items? Ссылка на страницу CPT на taxonomy.php Существуют ли какие-либо проблемы безопасности при установке константы WP_INSTALLING в значение true?

Добавить галерею 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 галереи одним из ваших собственных .