WordPress umożliwia nam stworzenie własnego kodu wynikowego shortcode gallery poprzez filtr post_gallery. Niestety filtr ten jest umieszczony przed właściwym kodem generującym galerię, zatem najcześciej proponowanym rozwiązaniem jest stworzenie własnej funkcji obsługi tego shortcode i wykorzystanie atrybutów, które otrzymujemy jako argument funkcji filtrującej. Takie rozwiązanie ma pewne wady:
- musimy pilnować ewentualnych zmian w kodzie WordPressa aby zapewnić pełną kompatybilność,
- w wypadku gdy chcemy tylko dodać jakieś atrybuty do zdjęć to rozwiązanie wydaje się być mocno na wyrost,
- trzeba wygenerować sporo kodu, który często duplikuje to co już robi WordPress.
Niestety pomysł dodania wywołania apply_filter na końcu shortcode nie ma wzięcia wśród developerów WordPressa, zatem poniżej lekko zmodyfikowana wersja kodu, którą znalazłem w jednym z wątków dotyczących tego problemu, dzięki niej można wykorzystać obecny kod shortcode i go po prostu zmodyfikować funkcjami modyfikującym ciągi znaków:
function custom_gallery_shortcode($gallery, $attr) { remove_filter('post_gallery', __FUNCTION__, 10, 2); $gallery = gallery_shortcode($attr); add_filter('post_gallery', __FUNCTION__, 10, 2); // Modyfikujemy kod w zmiennej $gallery TUTAJ return $gallery; } add_filter('post_gallery', 'custom_gallery_shortcode', 10, 2);
I jeszcze krótki komentarz dlaczego tak a nie inaczej:
Wywołujemy filtr post_gallery po czym go usuwamy na czas wywołania funkcji gallery_shortcode, która bez tego wpadłaby w niekończącą się pętlę jako, że to on jest źródłem wywołania tego filtra. Po całym zabiegu przywracamy nasze wywołanie filtra i możemy według uznania modyfikować wynikowy kod galerii.