Как добавить class="fancybox" к стандартной галерее WordPress?
Я попробовал этот шорткод:
[gallery class="fancybox" link="file" columns="5"]
Но class="fancybox" не добавляется к тегу a href каждого изображения.
Как можно добавить class="fancybox" к каждому тегу a href?
PS: где находится исходный код галереи?

Вы можете использовать javascript/jquery для решения этой задачи.
Когда вы вставляете галерею в записи WordPress, вся галерея оборачивается в div с id типа "gallery-1", но также имеет класс "gallery". Кроме того, каждый элемент окружен двумя другими тегами "dl" и "dt" с классами "gallery-item" и "gallery-icon" соответственно.
Таким образом, вы можете просто использовать jQuery для выбора всех ссылок внутри этих классов и добавить любой скрипт лайтбокса, который вам нужен.
Если это fancybox, то что-то вроде этого должно сработать:
jQuery(".gallery-icon a").fancybox();
Можно быть более конкретным, указывая классы CSS .gallery .gallery-item .gallery-icon в таком порядке, а затем тег a (для ссылки).
Для новых галерей Gutenberg это должно работать:
jQuery(".wp-block-gallery .blocks-gallery-item a").fancybox();
Если вы хотите, чтобы пользователи могли перемещаться между изображениями как в галерее, используйте:
jQuery(".gallery-icon a").fancybox().attr('data-fancybox', 'gallery');
А для новых галерей Gutenberg используйте вместо этого:
jQuery(".wp-block-gallery .blocks-gallery-item a").fancybox().attr('data-fancybox', 'gallery');
Если вам нужен более детальный контроль (для нескольких галерей на одной странице), ознакомьтесь с этим ответом.
Или используйте простой плагин, который применяет тот же подход от Viper007Bond, который делает это чисто и аккуратно, но использует colorbox вместо fancybox.

jQuery работает в WordPress в режиме no-conflict. Я соответствующим образом изменил ваш код. О, и добро пожаловать на WordPress Stack Exchange!

Эти ответы были правильными, но теперь fancybox изменил свои спецификации. Атрибут rel="gallery" больше не используется, вместо него используется "data-fancybox=gallery". Поэтому новые скрипты должны выглядеть так:
jQuery(".gallery-icon a").fancybox().attr('data-fancybox', 'gallery');
и
jQuery('.gallery').each(function() {
// устанавливаем rel для каждой галереи
jQuery(this).find(".gallery-icon a").attr('data-fancybox', 'group-' + jQuery(this).attr('id'));
});

продолжая мысль @kaiser -
Каждая галерея в идеале должна иметь уникальный идентификатор, но теперь, когда записи и страницы могут содержать несколько галерей, с помощью PHP не так просто присвоить каждой галерее уникальный атрибут rel.
jQuery('.gallery').each(function (g) {
jQuery('a', this).attr('rel', function (i, attr) {
return attr + ' gallery-' + g;
});
});`
Будьте внимательны с селекторами, ваша тема может их переопределять. Подробнее об этом можно прочитать на http://kaspars.net/blog/wordpress/add-rel-attribute-to-each-gallery-post
