Jeste li se pitali kako možda nadopuniti kraj svoj članka s nečim vašim sadržajem kako bi Vam stranica bila unikatnija? Filterima Wordpress omogućava mijenjanje različitog sadržaja na Vašoj web stranici i to ću Vam pokušati pokazati u ovom tutorijalu.
Za ovaj tutorijal zamisliti ćemo da klijent drži blog kojeg puni sa sadržaja geek.hr stranice. Kako ne bi morao uvijek misliti na to da je potrebno navesti izvor svog članka mi ćemo dodati taj dio teksta automatski na kraju svakog njegovog članka. Tekst će biti: "Izvor teksta: www.bug.hr" i biti će polinkana stranica.
Wordpress Plugin ili Tema?
U prošlosti dosta je bilo problema kod toga da se neki sadržaj pisao preko nekih Custom Post Type-ova (CPT) koji su bili kreirani putem Teme i time kada bi korisnik odlučio iskoristiti drugu temu taj sadržaj bi nestao. Ne bi nestao u pravom smislu ali njegov Custom Post Type ne bi više postojao.
Uzmimo za primjer katalog knjiga koji je došao sa Temom Knjižnica. Klijent je tamo upisivao nove knjige i time ih lako svrstavao i listao na svojoj stranici po potrebi. Takav CPT bi se npr. zvao knjige, a sada kada je korisnik promijenio temu u neku drugu koja isto se koristi kao knjižnica ali ta tema ima CPT books, unesene knjige ne bi više bile definirane kao CPT books i prikazivale bi se možda na nekom običnom listanju ostalih članaka.
Taj je problem davno bio riješen time što su se zadala jasna pravila kada i za što se koriste pluginovi, a za što teme. Kako ovo nije tema ovog tutorijala ja ću Vam samo reći da za dijelove Wordpressa koji služe za upravljanje sadržajem kao što je pisanje novog sadržaja i sl. se koriste pluginovi kako se ne bi izgubili takvi sadržaji i njihove definicije kod mijenjanja tema tj. izgleda svoje stranice.
Dakle, mi ćemo ovdje napraviti svoj Plugin. Napravite folder u svojoj lokalnoj Wordpress stranici ( ne predlažem Vam da odmah krenete na Live stranicu ) i proizvoljno ga nazovite. Ja ću svoj nazvat lakoTutsContent i sada napravite unutar tog foldera functions.php i otvorite ga. Nakon toga upišite sljedeće:
<?php /** * Plugin Name: LakoTuts Content Change
* Plugin URI: http://www.lakotuts.com
* Description: Plugin za dodavanje sadržaja člancima
* Version: 1.0
* Author: Igor Benić //Vaše ime
* Author URI: http://www.lakotuts.com //Vaš URL
* License: GPL2 */
/* Copyright 2014 Igor Benić (email : i.benic@hotmail.com)
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program;
if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
Spremite svoju functions.php i otvorite vašu Wordpress stranicu, odite u Admin Dashboard i aktivirajte svoj Plugin pod Plugins. Tu možete primijetiti kako se listaju sve informacije koje ste dodali na početku functions.php datoteke.
Filter the_content
To mijenajmo koristeći filter the_content koji sadrži naš sadržaj stranice odnosno tekst stranice. Više o tome filteru možete pronaći na http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content.
Sigurno se pitate sada ili ćete se možda pitati kako sam baš znao da moram ovo koristiti ili kako sam uopće došao do toga. Odgovor je jednostavan, morate puno raditi i učiti s Wordpressom, a najviše u tome Vam može pomoći sam Wordpress sa svojim codexom http://codex.wordpress.org/ gdje možete pronaći sve informacije Vama potrebne kao što su u ovome slučaju filteri: http://codex.wordpress.org/Plugin_API/Filter_Reference
Promijenimo naš sadržaj
Sada u Vašu functions.php dodajte sljedeći dio koda:
function lakotuts_dodaj($content) {
$dodatni_sadrzaj = '<p>Izvor teksta: <a href="http://www.bug.hr" target="_blank" title="Izvor članka">www.bug.hr</a></p>';
$content = $content . $dodatni_sadrzaj;
return $content;
}
add_filter('the_content', 'lakotuts_dodaj');
Ovime sada smo napravili sljedeće:
- Definirali smo varijablu dodatni_sadrzaj i dodali joj vrijednost koju mi želimo, a to je tekst sa poveznicom na www.geek.hr
- Zatim smo na postojeću varijablu content spojili naš dodatni sadržaj
- Nakon spajanja vraćamo dorađenu varijablu content
Ali to u funkciji nije dovoljno jer je nemamo kako pozvati pa zato koristimo add_filter funkciju koja nam filtrira sadržaj tako da nakon što se prvobitni sadržaj izvrti poziva se i naša funkcija za dodavanje novog dijela sadržaja na postojeći.
Problemi i greške
Rješenje koje smo napravili gore stvarno radi ali može doći i do problema kod ovakvog pristupa. Što ako to želimo prikazivati samo na stranici tog sadržaja ne i u listanju samog sadržaja ( to bi bio slučaj kada bi dodavali dodatni sadržaj prije samog sadržaja - tada bi se taj sadržaj prikazao i u sažetku ). Što ako se takav neki tekst prikazuje u nekom sidebaru kao dio nekakvog widget-a? Što ako mi želimo to samo na člancima prikazati ili na nekom CPT ( npr. ne želimo na stranici O nama prikazati "Izvor teksta:..." ) ?
Zbog takvih stvari moramo doraditi našu funkciju gdje ćemo ispitati da li je to stvarno stranica članka a ne stranica arhive ili kategorije te da li je to glavni post, a ne neki dio u widgetu jer iako smo na stranici nekog članka, možda to nije stranica tog članka.
function lakotuts_dodaj($content) {
if( is_single() && is_main_query() ) {
$dodatni_sadrzaj = '<p>Izvor teksta: <a href="http://www.bug.hr" target="_blank" title="Izvor članka">www.bug.hr</a></p>';
$content = $content . $dodatni_sadrzaj;
}
return $content;
}
add_filter('the_content', 'lakotuts_dodaj');
Što se ovdje dogodilo? Sljedeće objašnjava:
- Provjeravamo da li je to stranica nekog članka (ovom funkcijom gledamo samo postove, ne page-eve i sl.)
- Provjeramoa da li je to sadržaj unutar glavnog upita koji se vrši za trenutnu stranicu, to može biti upit za trenutni članak, stranicu, arhivu i sl. (arhiva je isključena sa is_singular())
- Ukoliko je jedno i drugo točno tada dodajemo novi sadržaj već postojećem
Ja imam svoj CPT, šta sada?
Ukoliko želite to dodati na neki svoj Custom Post Type možete to učiniti više načina. Najjednostavniji je sljedeće gdje ne koristimo is_single nego is_singular.
function lakotuts_dodaj($content) {
if( is_singular('slug_tvog_CPT') && is_main_query() ) {
$dodatni_sadrzaj = '<p>Izvor teksta: <a href="http://www.bug.hr" target="_blank" title="Izvor članka">www.bug.hr</a></p>';
$content = $content . $dodatni_sadrzaj;
}
return $content;
}
add_filter('the_content', 'lakotuts_dodaj');
Zašto is_singular? Ova funkcija gleda i postove i page-eve i attachmente, ali ukoliko dodajemo neki slug od CPT-a on gleda samo taj dio. Time se ne moramo zamarati sa dodatnim provjerama kao kod korištenja is_single().
Zaključak
U ovome tutorijalu dotakli smo malo razliku Pluginova i Tema za Wordpress te pokazalo kako napraviti sam svoj Wordpress Plugin. Ovim Pluginom mi smo jednostavno dodali na kraj sadržaja samo kratki tekst i link kao izvor. Daljnja poboljšanja bila bi možda dodati dodatno polje u našem postu koje bi služilo za link i naslov stranice koje bi zatim prikačili uz "Izvor teksta:" i tako imali različite vrijednosti za pojedini post. Korištenjem filtera možemo napraviti razne dorade na našoj stranici i tako sami upravljati izgledom i prikazom informacija. Ukoliko imate kakva pitanja, ostavite ih dolje u komentarima i ja ću se potruditi Vam odgovoriti.