Na razie nie wchodząc głęboko w szczegóły wyjaśnię, o co w tym wpisie chodzi. Otóż postaram się przybliżyć wam filtr the_content, dzięki któremu bardzo łatwo zrealizujemy cel postawiony w temacie.

Filtry w WordPressie są często wykorzystywane we wtyczkach – np. do dodawania na końcu wpisu guzików z mediów społecznościowych.

Wyobraźmy sobie sytuację w której mamy już wiele opublikowanych wpisów. Wyobrażamy sobie naszego bloga z 50 wpisami (bardzo często odwiedzanym z resztą). I teraz chcielibyśmy sobie coś tam zmienić, coś tam dodać na początku tekstu, może też na końcu. Najlepszy przykład jaki przychodzi mi teraz do głowy to kod reklamy. 🙂 Mamy już na naszym blogu gotowe shortcode-y, więc moglibyśmy sobie spokojnie zedytować posty i wpisując krótką komendę w edytorze, albo nawet klikając guzik shortcode-a w edytorze umieścić go w treści nasz baner. Zaraz, edytować 50 postów i bawić się w ręczne dodawanie?

Sposób oczywiście najlepiej sprawdza się w sytuacji, gdy chcemy dodać coś bezpośrednio na początku wpisu i bezpośrednio po nim. Wiadomo, że mając te 50 postów, które prawdopodobnie powstawały na przestrzeni kilku miesięcy/lat, to każdy wpis będzie trochę inny. Dlatego sposób wymaga przewidzenia niektórych sytuacji i sprawdzenia efektu końcowego „ręcznie – naocznie”, niemniej zawsze jest to lepsze niż edycja każdego wpisu z osobna.

Po tym przydługim wstępniaku, zacznijmy wreszcie działać, oto przykład:

Cały kod:

// dodanie przed i po poscie jednostki reklamowe
function add_text($content)
{
    //kod reklamy
    $ad = 'TWÓJ KOD REKLAMY';

    $updated_content = '';

    if ( is_single() ) 
    {
        $updated_content = $ad . '<br />' . $content . '<br />' . $ad . '<br />';
        return $updated_content;
    }
    else
    {
        return $content;
    }
}

add_filter( 'the_content', 'add_text' );

A teraz postaram się wytłumaczyć o co tutaj chodzi.

W pliku functions.php piszemy nową funkcję add_text(), przyjmującą argument $content. Tak, w tym argumencie znajduje się treść naszego wpisu.

W ciele funkcji, w zmiennej $ad zapisujemy kod reklamy dla naszego przykładu, albo cokolwiek innego, co chcielibyśmy umieścić na początku (na końcu) wpisu.

W zmiennej $updated_content zapiszemy naszą, za chwilę lekko zmodyfikowaną, wersję wpisu.

W „ifi-e” sprawdzamy, czy wywołanie dotyczy pojedynczego wpisu, bo nie chcielibyśmy, żeby reklama pojawiała się liście wpisów przy każdym wycinku, prawda? W tym miejscu możemy także dodać jakiś inny własny warunek jak sprawdzenie typu/statusu wpisu, czy należy do jakiejś kategorii, zawiera tag itd., zależy od naszych potrzeb.

Wreszcie instrukcja właściwa:

$updated_content = $ad . '<br />' . $content . '<br />' . $ad . '<br />';

Nie jest to jakaś zdobycz programowania (tylko podstawy podstaw), ale chodzi o zrozumienie przykładu i tego w jaki sposób osiągnąć wspomniany efekt. Do reklamy na początku „doklejamy” znak łamania linii, do tego doklejamy kontent wpisu, znak łamana linii, reklamę która ma być na końcu wpisu i na koniec znowu znak łamania linii. Na dokładnym „sklejeniu” „stringów”, w kolejnej linijce, która tak na prawdę spokojnie mogłaby być uwzględniona w poprzedniej, zwracamy efekt końcowy.

Ważne jest, że jeżeli używamy już tego „ifa”, bo nie zawsze jest nam potrzebny, to należy pamiętać także o else. Jeżeli go pominiemy, a warunek nie zostanie spełniony, to nie wyświetli nam się w ogóle treść wpisu.

Na koniec, najważniejsze, czyli dodanie filtra z argumentem the_content i add_text. Dzięki temu WordPress weźmie pod uwagę naszą funkcję przed wyświetleniem wpisów.

  • the_content – jak nazwa wskazuje, oznacza że chodzi o kontent, treść wpisu. Z resztą tak samo nazywa się funkcja, której używamy w pętli WordPress-a do wyświetlenia treści wpisu.
  • add_text – tak nazywa się nasza właśnie utworzona funkcja. Jeżeli nazwa naszej funkcji i nazwa podana w filtrze nie będą się pokrywać, wpis także nie zostanie wyświetlony.

Wspomniany sposób można z powodzeniem wykorzystać także w przypadku tytułu wpisu. Wtedy zamiast the_content, używamy the_title, o tak:

add_filter( 'the_title', 'add_before_title' );


Wpis otagowano:

Komentarze do wpisu 7 komentarzy

Pomogłem? Dodaj coś od siebie! Skomentuj ten wpis:

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *