Kilka dni temu odezwał się do mnie jeden z użytkowników wtyczki „PRyC WP: Add custom content to post and page (top/bottom)” do WordPressa (tutaj znajduje się artykuł na temat tej wtyczki). Potrzebował wsparcia, bo zawartość dodawana na dole postów przez wtyczkę wyświetlała się przed dodatkowo zdefiniowanym polem we wtyczce ACF. I nie pomaga dostępna od jakiegoś czasu opcja pozwalająca ustawić priorytet. Po wymianie kilku zdań wszystko stało się jasne – dodatkowe pole utworzone przez wtyczkę ACF wyświetlało się po głównej zawartości posta, gdy tymczasem wtyczka „PRyC WP: Add custom content to post and page (top/bottom)” operuje bezpośrednio na tej zawartości (funkcja/filtr the_content()), czyli tym samym oczywiste, że będzie przed.
Spis treści w artykule
Własna treść w wybranym miejscu w WordPressie
Pozornie sprawa beznadziejna, bo mamy 2 wtyczki operujące w różnych obszarach WordPressa, a do tego druga wtyczka (ACF) operuje poza polem z zawartością postu. Ale skoro do czynienia mieliśmy z motywem potomnym (child theme), i do tego jeszcze modyfikowanym choćby pod wyświetlanie zawartości pola z wtyczki ACF, to uznałem, że jak będzie budżet (;-)), to można zmodyfikować działanie wtyczki „PRyC WP: Add custom content to post and page (top/bottom)” tak, by zamiast korzystać z filtra/funkcji the_content() wyświetlała zdefiniowaną treść w dowolnym miejscu, gdzie zostaną wstawione odpowiednie znaczniki PHP.
Całej modyfikacji nie będę tu opisywał, i to nie tylko dlatego, że być może jako opcja niebawem pojawi się we wtyczce. Ale to dobra okazja, by pokazać, jak można coś takiego – wyświetlenie dowolnej treści właściwie w dowolnym miejscu – zrobić.
Motyw potomny (child theme)
Wprawdzie w ekstremalnej sytuacji (albo gdy mamy motyw dedykowany, który i tak nie będzie aktualizowany) można zmian dokonać bezpośrednio w bazowym motywie, ale jest to o tyle bezcelowe, że po aktualizacji zmiany znikną.
Wprawdzie kod odpowiedzialny za większość operacji możemy umieścić we własnej wtyczce, to jednak w większości przypadków znaczniki odpowiedzialne za określenie gdzie on ma się wykonać (gdzie ma wyświetlić treść) będą w plikach związanych z motywem. Np. w pliku typu single.php, zazwyczaj odpowiedzialnym za wyświetlenie pojedynczego wpisu. Stąd motyw potomny wydaje się jedynym sensownym wyjściem.
Podstawowe funkcje, czyli co będziemy wyświetlać
By wyświetlić naszą treść w wybranym przez nas miejscu, musimy skorzystać z 2 funkcji, które będą się wzajemnie uzupełniać. Pierwsza zawiera treść do wyświetlenia:
function webinsider_wp_add_custom_content_show() {
echo "Przykładowa treść do wyświetlenia";
}
add_action('webinsider_wp_add_custom_content', 'webinsider_wp_add_custom_content_show', 10 );
W przypadku gdy zamierzamy korzystać w dodatkowej treści z tzw. krótkich kodów (shortcodes), to musimy lekko zmodyfikować kod, bo domyślnie WordPress krótkie kody przetwarza tylko w podstawowej treści (the_content):
function webinsider_wp_add_custom_content_show() {
do_shortcode ( "Przykładowa treść do wyświetlenia z krótkimi kodami..." );
}
add_action('webinsider_wp_add_custom_content', 'webinsider_wp_add_custom_content_show', 10 );
Druga definiuje znacznik PHP, który później umieszczamy w wybranym miejscu:
function webinsider_wp_add_custom_content() {
do_action('webinsider_wp_add_custom_content');
}
I jeśli chodzi o kod do umieszczenia we wtyczce lub pliku functions.php to tyle.
Znacznik, czyli wskazujemy, gdzie treść ma się pojawić
Kolejny krok, to zdefiniowanie miejsca, w którym powyżej zdefiniowana treść ma się pojawić. Możliwości jest wiele, ale załóżmy, że będzie to już wspomniany plik single.php odpowiedzialny za wyświetlanie pojedynczego wpisu/postu.
Otwieramy go do edycji, w wybranym miejscu wstawiamy nasz znacznik (jeśli wstawiamy go w bloku kody PHP, to oczywiście pomijamy tagi otwierające kod, czyli „<?php” i „?>”):
<?php webinsider_wp_add_custom_content(); ?>
I to właściwie wszystko. W tym momencie we wskazanym miejscu powinna pojawić się wcześniej zdefiniowana treść.
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01