Korisni code snippet-i za WordPress
Ukoliko ste vlasnik WordPress web sajta ili radite sajtove za druge, onda već znate da je ponekad potrebno da izvršite neka dodatna podešavanja WordPress-a i prilagodite ga zahtevima projekta ili zahtevima klijenta. Iako je mnoga od ovih podešavanja najlakše izvršiti pomoću plugina, to nije uvek i najbolje rešenje.
Kao što znate, neki plugini mogu da uspore vaš sajt, a previše plugina često zna da napravi više problema nego koristi vašem sajtu.
Ali, dobar deo nekih jednostavnijih funkcionalnosti možete uraditi i sami, bez korišćenja plugina. Za to vam je neophodno samo osnovno poznavanje koda i da ispratite neke od osnovnih smernica u ovom tekstu.
Kako bi vam bilo lakše da razumete i pravilno primenite svaki od predstavljenih code snippet-a, uz svaki o njih ćemo dati i detaljnije objašnjenje kako radi i šta je potrebno da prilagodite kako bi bio u potpunosti prilagođen vašoj konkretnoj potrebi.
Code snippet-e u WordPress-u najčešće ubacujete na nekoliko ključnih mesta u zavisnosti od toga šta tačno želite postići. Evo nekoliko najčešćih mesta gde možete ubaciti code snippet-e:
- functions.php fajl: Ovaj fajl se nalazi unutar vaše aktivne teme i koristi se za dodavanje prilagođenih funkcija i podešavanja. Možete koristiti `add_action` i `add_filter` funkcije da biste izvršili određene radnje prilikom učitavanja stranice.
- header.php ili footer.php fajlovi: Ovi fajlovi se koriste za ubacivanje koda koji će se pojaviti u zaglavlju ili podnožju svake stranice. To može biti korisno za dodavanje globalnog stila, skripti ili analitičkog koda.
Naravno, code snippet-e možete ubaciti i na neka druga mesta unutar WordPress-a, ali ovo su neka od najčešćih mesta, pa ćemo se u ovom tekstu zadržati na njima.
Napomena: Pre bilo kavih izmena, uradite backup celog web sajta, kako biste obezbedili da u slučaju problema sve možete da vratite na prethodno stanje.
Kako da filtrirate i prikažete samo featured postove
Da biste filtrirali i prikazali samo “featured” (istaknute) postove na WordPress sajtu, treba da koristite WordPress Loop (petlju) zajedno sa odgovarajućim query parametrima. Ovo možete postići putem sledećeg koda:
<?php
$args = array(
'post_type' => 'post', // Tip posta koji želite da prikažete (može biti i drugi tip, kao 'custom_post_type')
'meta_key' => 'featured', // Ključ po kojem ćete filtrirati istaknute postove
'meta_value' => 'yes', // Vrednost ključa 'featured' koja označava istaknuti post
'posts_per_page' => -1, // Broj postova po stranici (-1 za prikaz svih)
);
$featured_query = new WP_Query($args);
if ($featured_query->have_posts()) {
while ($featured_query->have_posts()) {
$featured_query->the_post();
// Ovde možete prikazati sadržaj istaknutog posta
the_title(); // Primer prikaza naslova posta
the_content(); // Primer prikaza sadržaja posta
}
wp_reset_postdata(); // Resetovanje podataka petlje
} else {
echo 'Nema istaknutih postova.';
}
?>
U ovom primeru, koristimo `WP_Query` da bismo napravili prilagođeni upit za postove koji imaju određeni meta ključ (`featured`) sa vrednošću `yes` (možda ćete morati da prilagodite ove vrednosti u zavisnosti od konkretnog slučaja). Petlja će prolaziti kroz rezultate i prikazivati naslove i sadržaj istaknutih postova.
Ovaj kod se obično ubacuje u PHP fajlove vaše WordPress teme, kao što je functions.php fajl ili neki drugi prilagođeni fajl koji se učitava na određenim stranicama (npr. template za prikazivanje određene kategorije ili posebnog post tipa). Ovaj kod će se koristiti da bi prikazao istaknute postove sa navedenim ključem i vrednošću.
Za bolje razumevanje preporučujemo da se upoznate sa dokumentacijom WordPress-a i funkcijama kao što su `WP_Query`, `the_post()` i `wp_reset_postdata()` kako biste bolje razumeli kako ova logika radi.
Kako da prikažete slične postove usred polovine sadržaja
Kako biste posetioce svog sajta što duže zadržali na svom sajtu i prikazali im još interesantnih i pre svega relevantnih tekstova, dobra taktika je da ih odmah usmerite i ka drugim relevantnim tekstovima na vašem sajtu, radi daljeg i detaljnijeg informisanja.
Zato je dobra strategija da direktno u svom tekstu linkujete na neke druge dobre tekstove .
Pomoću ovog code snippet-a koji ćete ubaciti u functions.php fajl, to se automatski dešava nakon prve polovine članka.
function add_interesting_article_in_the_middle($content) {
if (!is_single()) return $content;
$paragraphs = explode("</p>", $content);
$paragraphs_count = count($paragraphs);
$middle_index= absint(floor($paragraphs_count / 2));
$interesting_content = "";
if($paragraphs_count <= 10) return $content;
for ( $i = 0; $i < $paragraphs_count; $i++) {
if($i === $middle_index) {
$primary_category = get_post_primary_category($post->ID)["primary_category"];
$category_id = $primary_category->term_id;
$posts = get_posts(array(
"posts_per_page" => 6,
"category" => $category_id,
"orderby" => "rand"
));
if(count($posts) > 1) {
$interesting_content .= "<div class=\"interesting-container\">";
$interesting_content .= "<span class=\"interesting-headline\">Also interesting</span>";
$interesting_content .= "<ul>";
foreach($posts as $post_obj) {
if($post_obj->ID == get_the_ID()) continue;
$interesting_content .= "<li><a href=\"" . get_permalink($post_obj->ID) . "\" title=\"" . $post_obj->post_title . "\">" . $post_obj->post_title . "</a></li>";
}
$interesting_content .= "</ul>";
$interesting_content .= "</div>";
}
}
$interesting_content .= $paragraphs[$i] . '</p>';
}
return $interesting_content;
}
add_filter('the_content', 'add_interesting_article_in_the_middle');
Automatsko postavljanje reklama između pasusa
U jednom od ranijih tekstova na našem blogu pisali smo o AdSense-u i Kako da ispravno dodate Google AdSense na WordPress web sajt
AdSense vam omogućava da preko reklama koje se postavljaju na vaš web sajt, zaradite nešto novca.
Iako AdSense omogućava automatsko plasiranje reklama, ovo učitavanje u nekim slučajevima ne funkcioniše uvek dobro i ne postiže željeni uspeh.
Mnoge reklame jednostavno moraju da se postave ručno. To je najbolje uraditi sa bočnim panelom i samim sadržajem stranice. Pomoću ovog code snippet-a reklame će biti postavljene u sadržaj na vašem sajtu, tako da budu na jednakom rastojanju.
Sve što treba da uradite jeste da ubacite vaš JavaScript kod ili iFrame reklame u liniju 7.
function insert_ads_in_post($content) {
if (!is_single()) return $content; // Prikazuje reklame samo na stranicama postova
$paragraphs = explode("</p>", $content);
$paragraphs_count = count($paragraphs);
$content_with_ads = "";
$ad_code = "**VAŠ AD KOD**";
for ($i = 0; $i < $paragraphs_count; $i++) {
// Prikazuje reklame kada ima više od 30 paragrafa
if ($paragraphs_count > 30) {
if ($i === absint(floor($paragraphs_count/5))
|| $i === absint(floor($paragraphs_count/5*2))
|| $i === absint(floor($paragraphs_count/5*3))
|| $i === absint(floor($paragraphs_count/5*4))) {
$content_with_ads .= $ad_code;
}
} else { // Prikazuje 3 reklame
if ($i === absint(floor($paragraphs_count/4))
|| $i === absint(floor($paragraphs_count/4*2))
|| $i === absint(floor($paragraphs_count/4*3))) {
$content_with_ads .= $ad_code;
}
}
$content_with_ads .= $paragraphs[$i] . "</p>";
}
return $content_with_ads;
}
add_filter("the_content", "insert_ads_in_post");
Ovaj kod se ubacuje u functions.php fajl, a funkcioniše tako što postavlja tri reklame. Ako stranica sadrži više od 30 pasusa, postaviće se četiri reklame. Po potrebi možete prilagoditi ovaj kod kako biste vi i posebno vaši posetioci bili zadovoljni, a stranica se ne bi izgubila u reklamama.
Prikazivanje datuma ažuriranja blog tekstova
Da bi blog tekstovi na vašem sajtu bili stalno aktuelni, potrebno je da ih povremeno ažurirate.
Ovo je važno kako bi čitaoci uvek bili snabdeveni najnovijim informacijama i, s druge strane, jer će se tokom vremena pojaviti neke greške ili zastarele informacije koje je potrebno ispraviti.
Stoga je važno prikazati datume izmena u pojedinačnim blog tekstovima ukoliko se oni razlikuju od datuma objavljivanja.
Ovaj code snippet će dodati datum ažuriranja ako je došlo do promene 14 dana nakon objavljivanja.
function show_last_updated_date($content) {
if(!is_single()) return $content;
$u_time = get_the_time('U');
$u_modified_time = get_the_modified_time('U');
$custom_content .= "<span class=\"update-info\">";
$publish_date = get_the_time("j. F Y");
$custom_content .= "<span>Published on <b>" . $publish_date . "</b></span>";
if ($u_modified_time >= $u_time + (60*60*24*14) && is_single() ) {
$updated_date = get_the_modified_time('j. F Y');
$custom_content .= "<span>Last updated on <b>" . $updated_date . "</b></span>";
}
$custom_content .= "</span>";
$custom_content .= $content;
return $custom_content;
}
add_filter('the_content', 'show_last_updated_date');
Ovaj kod takođe treba da ubacite u functions.php fajl svoje WordPress teme.
Kako da prikažete nasumično odabrane postove
Da biste automatski podesili prikazivanje nasumično odabranih postova na WordPress sajtu, možete koristiti sledeći kod:
<?php
// Prikazivanje nasumično odabranih postova
add_action('pre_get_posts', 'show_random_posts');
function show_random_posts($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('orderby', 'rand');
}
}
?>
Ovaj kod koristi funkciju `show_random_posts()` koja se dodaje na akciju `pre_get_posts`. Funkcija proverava da li je trenutni zahtev za prikazivanje početne stranice (`is_home()`) i da li je glavni upit (`is_main_query()`). Ako su ispunjeni ovi uslovi, upit se konfiguriše da sortira postove nasumično pomoću parametra `’orderby’ => ‘rand’`.
Ovaj kod treba dodati u `functions.php` fajl vaše aktivne WordPress teme.
Kako da automatski podesite podrazumevani tekst editor na HTML umesto Gutenberg editora
Kao što verovatno znate Gutenberg Editor je ugrađen u WordPress platformu od verzije WordPress 5.0, kao zamena za tradicionalni editor sa tekstualnim poljem (poznat kao Classic Editor).
Gutenberg Editor donosi značajne promene u načinu na koji se kreira i uređuje sadržaj na WordPress sajtovima. Umesto da korisnici pišu u jednom velikom tekstualnom polju, Gutenberg koristi “blokove” kako bi omogućio fleksibilnije organizovanje i stilizovanje sadržaja.
Ipak, od pojave Gutenberg Editor-a neki korisnici WordPress-a nisu želeli da prihvate ovaj novi način rada, zbog čega je čak i napravljen plugin pomoću kojeg se Gutenberg može isključiti kao podrazumevani editor.
Ako želite da automatski podesite podrazumevani tekst editor na HTML umesto Gutenberg editora u WordPress-u, i to bez upotrebe plugina, možete koristiti sledeći kod:
<?php
// Podešavanje podrazumevanog editora na HTML
add_filter('wp_default_editor', 'set_default_editor_to_html');
function set_default_editor_to_html() {
return 'html';
}
?>
Ovaj kod koristi funkciju `set_default_editor_to_html()` koja se dodaje na filter `wp_default_editor`. Funkcija vraća `’html’`, što znači da će HTML editor biti postavljen kao podrazumevani, umesto Gutenberg editora.
Ovaj kod treba dodati u `functions.php` fajl vaše aktivne WordPress teme.
Kako da automatski isključite podrazumevane widgete (sidebar komponente)
Da biste automatski isključili podrazumevane widgete (sidebar komponente) u WordPressu, možete koristiti sledeći kod:
<?php
// Isključivanje podrazumevanih widgeta
add_action('widgets_init', 'disable_default_widgets', 11);
function disable_default_widgets() {
unregister_widget('WP_Widget_Pages');
unregister_widget('WP_Widget_Calendar');
unregister_widget('WP_Widget_Archives');
unregister_widget('WP_Widget_Meta');
unregister_widget('WP_Widget_Search');
unregister_widget('WP_Widget_Text');
unregister_widget('WP_Widget_Categories');
unregister_widget('WP_Widget_Recent_Posts');
unregister_widget('WP_Widget_Recent_Comments');
unregister_widget('WP_Widget_RSS');
unregister_widget('WP_Widget_Tag_Cloud');
unregister_widget('WP_Nav_Menu_Widget');
}
?>
Ovaj kod koristi funkciju `disable_default_widgets()` koja se dodaje na akciju `widgets_init` sa prioritetom 11 (kako bi se osiguralo da se izvrši nakon učitavanja podrazumevanih widgeta). Unutar ove funkcije, koristi se `unregister_widget()` funkcija za isključivanje različitih podrazumevanih widgeta. Možete izmeniti listu isključenih widgeta prema vašim potrebama.
Ovaj kod treba dodati u `functions.php` fajl vaše aktivne WordPress teme.
Kako da sakrijete obaveštenje o dostupnom WordPress ažuriranju
Ako želite sakriti obaveštenje o dostupnom WordPress ažuriranju koje se obično prikazuje u admin panelu, možete koristiti sledeći kod:
<?php
// Sakrivanje obaveštenja o dostupnom WordPress ažuriranju
add_action('admin_head', 'hide_wordpress_update_notification');
function hide_wordpress_update_notification() {
remove_action('admin_notices', 'update_nag', 3);
}
?>
Ovaj kod koristi funkciju `hide_wordpress_update_notification()` koja se dodaje na akciju `admin_head`. Unutar ove funkcije, koristi se `remove_action()` kako bi se uklonila funkcija `update_nag` koja je odgovorna za prikazivanje obaveštenja o ažuriranju.
Ovaj kod se takođe ubacuje u functions.php fajl vaše WordPress teme
Napomena: Imajte na umu da iako ovaj kod sakriva obaveštenje o ažuriranju u admin panelu, ažuriranja su važna za sigurnost i stabilnost vašeg web sajta. Preporučujemo da redovno pratite dostupna ažuriranja i vršite ih kako biste održavali svoj web sajt sigurnim i u skladu sa najnovijim funkcionalnostima.
Kako da aktivirate Maintenance mode
Aktiviranje “maintenance mode” na WordPress sajtu obično zahteva upotrebu pugina koji vam olakšavaju upravljanje ovim modom. Međutim, moguće je i ručno napraviti ovu funkcionalnost ubacivanjem određenog koda u `functions.php` fajl aktivne WordPress teme. Evo kako možete to postići:
<?php
// Aktivacija maintenance moda
add_action('get_header', 'activate_maintenance_mode');
function activate_maintenance_mode() {
if (!current_user_can('edit_themes') || !is_user_logged_in()) {
wp_die('<h1>Sajt je trenutno u fazi održavanja</h1><p>Vratićemo se uskoro!</p>', 'Održavanje', array('response' => '503'));
}
}
?>
Ovaj kod će automatski aktivirati “maintenance mode” za sve posetioce koji nisu prijavljeni kao administratori. Kada posetioci pokušaju da pristupe sajtu, videće poruku o održavanju.
Kako da uklonite nepotrebne stavke iz admin dashboard menija
Da biste uklonili nepotrebne stavke iz WordPress admin panela (dashboard menija), možete koristiti `remove_menu_page()` funkciju. Ova funkcija vam omogućava da sakrijete određene stranice ili stavke menija od određenih korisničkih uloga. Evo kako to možete uraditi:
<?php
// Uklanjanje nepotrebnih stavki iz dashboard menija
add_action('admin_menu', 'remove_unnecessary_menu_items');
function remove_unnecessary_menu_items() {
// Uklonite sledeće stavke po potrebi
remove_menu_page('index.php'); // Dashboard
remove_menu_page('edit.php'); // Postovi
remove_menu_page('upload.php'); // Mediji
remove_menu_page('edit.php?post_type=page'); // Stranice
remove_menu_page('edit-comments.php'); // Komentari
remove_menu_page('themes.php'); // Izgled
remove_menu_page('plugins.php'); // Dodaci
remove_menu_page('users.php'); // Korisnici
remove_menu_page('tools.php'); // Alatke
remove_menu_page('options-general.php'); // Postavke
}
?>
U ovom primeru, funkcija `remove_unnecessary_menu_items()` se dodaje na akciju `admin_menu` i koristi funkciju `remove_menu_page()` za uklanjanje različitih stavki iz menija. Možete izvršiti prilagođavanje funkcije tako da uklonite samo one stavke koje želite.
Takođe, ovaj kod treba dodati u `functions.php` fajl vaše aktivne WordPress teme.
Kako da automatski detektujete da li korisnik pristupa sa mobinog uređaja
Sledeći code snippet omogućava vam da automatski detektujete da li korisnik pristupa sa mobilnog uređaja i, ukoliko je to slučaj, na primer da promenite boju pozadine stranice. Naravno, možete preduzeti i bilo koju drugu akciju, s tim da u tom slučaju kod u jednom delu mora biti drugačiji od navedenog. Ovde dajemo samo primer koda za promenu boje pozadine ukoliko je detektovan mobilni uređaj:
<?php
// Detekcija mobilnog uređaja
function is_mobile_device() {
return wp_is_mobile();
}
// Prikazivanje boje pozadine na osnovu uređaja
add_action('wp_head', 'change_background_color_based_on_device');
function change_background_color_based_on_device() {
if (is_mobile_device()) {
echo '<style>body { background-color: lightblue; }</style>';
} else {
echo '<style>body { background-color: white; }</style>';
}
}
?>
Ovaj kod koristi funkciju `wp_is_mobile()` za detekciju da li je korisnik na mobilnom uređaju. Ako jeste, dodaje se CSS stil koji menja boju pozadine na svetloplavu. U suprotnom, boja pozadine ostaje bela.
Kod takođe definiše dve funkcije:
1. `is_mobile_device()`: Ova funkcija koristi `wp_is_mobile()` funkciju za proveru da li je korisnik na mobilnom uređaju. Vraća `true` ili `false` u zavisnosti od rezultata provere.
2. `change_background_color_based_on_device()`: Ova funkcija koristi `add_action(‘wp_head’, …)` da bi se dodao CSS stil direktno u zaglavlje HTML dokumenta. Ako je korisnik na mobilnom uređaju, postavlja se boja pozadine na svetloplavu, a ako je korisnik na desktop uređaju, boja pozadine ostaje bela.
Dodajte ovaj kod u `functions.php` fajl svoje aktivne WordPress teme kako biste omogućili promenu boje pozadine na osnovu uređaja sa kojeg korisnik pristupa sajtu.
Kako da automatski ispraznite trash (smeće) na backend-u svog sajta
Na WordPress sajtu, možete koristiti sledeći code snippet kako biste automatski ispraznili smeće (`trash`) sajta. Možete ubaciti ovaj kod u `functions.php` fajl svog aktivnog WordPress teme ili koristiti neki plugin koji omogućava ubacivanje prilagođenog koda.
// Automatski isprazni trash svakog dana
if ( ! wp_next_scheduled( 'custom_empty_trash_event' ) ) {
wp_schedule_event( time(), 'daily', 'custom_empty_trash_event' );
}
add_action( 'custom_empty_trash_event', 'custom_empty_trash_function' );
function custom_empty_trash_function() {
// Isprazni trash
wp_empty_trash();
}
Ovaj kod koristi WordPress kroz svoj “cron” sistem kako bi automatski periodično pozvao funkciju `custom_empty_trash_function()` svakog dana. Funkcija zatim koristi `wp_empty_trash()` da izvrši pražnjenje smeća. Ovo će automatski izbrisati sve obrisane stavke koje su prošle određeni vremenski period, obično 30 dana.
Kako da ograničite broj revizija postova
Da biste ograničili broj revizija postova u WordPress-u, možete koristiti filter funkciju i postaviti odgovarajuće vrednosti. Ovo je korisno kako biste smanjili prostor na bazi podataka i održali ga čistim. Evo kako možete to postići:
1. Dodajte sledeći kod u `functions.php` fajl vaše WordPress teme:
// Ograničavanje broja revizija postova
function limit_post_revisions($num, $post) {
return 3; // Promenite ovu vrednost na željeni broj revizija
}
add_filter('wp_revisions_to_keep', 'limit_post_revisions', 10, 2);
U ovom kodu, funkcija `limit_post_revisions` postavlja broj revizija na 3 za sve postove. Možete promeniti vrednost 3 na željeni broj revizija koje želite da sačuvate.
2. Sačuvajte promene u `functions.php` fajlu i ponovo pokrenite WordPress admin panel.
Nakon što dodate ovaj kod, WordPress će automatski zadržati samo zadati broj revizija za svaki post, a starije revizije će biti obrisane kako bi se sačuvao prostor u bazi podataka.
Kako da ograničite vreme koje WordPress čeka pre nego pokrene autosave
Da biste ograničili vreme koje WordPress čeka pre nego što izvrši automatsko čuvanje (autosave) postova, možete koristiti filter funkciju i postaviti odgovarajuću vrednost za vreme čekanja. Evo kako to možete postići:
1. Dodajte sledeći kod u `functions.php` fajl vaše WordPress teme:
// Ograničavanje vremena autosave-a na 60 sekundi
function limit_autosave_interval($interval) {
return 60; // Promenite ovu vrednost na željeni broj sekundi
}
add_filter('wp_doing_autosave', 'limit_autosave_interval');
U ovom kodu, funkcija `limit_autosave_interval` postavlja vreme čekanja za autosave na 60 sekundi. Možete promeniti vrednost 60 na željeni broj sekundi.
2. Sačuvajte promene u `functions.php` fajlu i ponovo pokrenite WordPress admin panel.
Nakon što dodate ovaj kod, WordPress će čekati samo zadati broj sekundi pre nego što izvrši automatsko čuvanje postova. Ovo može pomoći da se smanji opterećenje na serveru i smanji broj nepotrebnih autosave operacija.
Kako da prilagodite WordPress logo na admin stranici
Da biste prilagodili WordPress logo (poznat i kao “Admin logo”) na WordPress admin panelu, možete koristiti sledeći kod u `functions.php` fajlu vaše WordPress teme. Ovaj kod će zameniti postojeći WordPress logo sa vašim prilagođenim logom:
1. Prvo, pripremite svoj prilagođeni logo u odgovarajućim dimenzijama i formatima (npr. PNG ili JPEG).
2. Dodajte sledeći kod u `functions.php` fajl vaše WordPress teme:
function custom_login_logo() {
echo '<style type="text/css">
#login h1 a {
background-image: url(' . get_stylesheet_directory_uri() . '/your-custom-logo.png) !important;
background-size: contain !important;
width: 100% !important;
height: 100px !important;
}
</style>';
}
add_action('login_head', 'custom_login_logo');
U ovom kodu, zamenite `’your-custom-logo.png’` sa putanjom do vašeg prilagođenog loga. Takođe možete prilagoditi dimenzije i stil loga prema vašim potrebama.
3. Sačuvajte promene u `functions.php` fajlu i ponovo otvorite stranicu za prijavljivanje WordPress admin panela.
Nakon što dodate ovaj kod, WordPress logo na stranici za prijavljivanje (login page) će biti zamenjen sa vašim prilagođenim logom.
Kako da postavite breadcrumbs
Breadcrumbs (mrvica ili putanja) su navigacioni elementi koji pomažu korisnicima da se orijentišu na vašem sajtu, prikazujući im trenutnu putanju od početne stranice do trenutne stranice. Evo kako možete kreirati breadcrumbs pomoću code snippet-a u WordPressu:
1. Dodajte sledeći kod u `functions.php` fajl vaše WordPress teme:
function custom_breadcrumbs() {
$home_text = 'Početna'; // Tekst za link do početne stranice
$delimiter = '»'; // Razdelnik između breadcrumb linkova
$before = '<span class="current">'; // Element pre aktuelne stranice
$after = '</span>'; // Element posle aktuelne stranice
if (!is_home() && !is_front_page() || is_paged()) {
echo '<div class="breadcrumbs">';
global $post;
echo '<a href="' . get_home_url() . '">' . $home_text . '</a> ' . $delimiter . ' ';
if (is_category()) {
$cat_obj = get_queried_object();
$this_category = get_category($cat_obj->term_id);
$parent_category = get_category($this_category->parent);
if ($this_category->parent != 0)
echo(get_category_parents($parent_category, TRUE, ' ' . $delimiter . ' '));
echo $before . 'Arhiva za kategoriju "' . single_cat_title('', false) . '"' . $after;
} elseif (is_tax()) {
$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy'));
echo $before . $term->name . $after;
} elseif (is_single() && !is_attachment()) {
if (get_post_type() != 'post') {
$post_type = get_post_type_object(get_post_type());
$slug = $post_type->rewrite;
echo '<a href="' . get_home_url() . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a>';
echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after;
} else {
$cat = get_the_category();
$cat = $cat[0];
echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
echo $before . get_the_title() . $after;
}
} elseif (!is_single() && !is_page() && get_post_type() != 'post' && !is_404()) {
$post_type = get_post_type_object(get_post_type());
echo $before . $post_type->labels->singular_name . $after;
} elseif (is_attachment()) {
$parent = get_post($post->post_parent);
$cat = get_the_category($parent->ID);
$cat = $cat[0];
echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
echo '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a>';
echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after;
} elseif (is_page() && !$post->post_parent) {
echo $before . get_the_title() . $after;
} elseif (is_page() && $post->post_parent) {
$parent_id = $post->post_parent;
$breadcrumbs = array();
while ($parent_id) {
$page = get_page($parent_id);
$breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
$parent_id = $page->post_parent;
}
$breadcrumbs = array_reverse($breadcrumbs);
foreach ($breadcrumbs as $crumb)
echo $crumb . ' ' . $delimiter . ' ';
echo $before . get_the_title() . $after;
} elseif (is_search()) {
echo $before . 'Rezultati pretrage za "' . get_search_query() . '"' . $after;
} elseif (is_tag()) {
echo $before . 'Tag: "' . single_tag_title('', false) . '"' . $after;
} elseif (is_author()) {
global $author;
$userdata = get_userdata($author);
echo $before . 'Članci autora "' . $userdata->display_name . '"' . $after;
} elseif (is_404()) {
echo $before . 'Greška 404' . $after;
} elseif (has_post_format() && !is_singular()) {
echo get_post_format_string(get_post_format());
}
echo '</div>';
}
}
Ovaj kod definiše funkciju `custom_breadcrumbs()` koja će generisati breadcrumbs na osnovu trenutne stranice. Prilagodite vrednosti `$home_text`, `$delimiter`, `$before` i `$after` prema vašim potrebama za dizajn breadcrumbs.
3. Pozovite funkciju `custom_breadcrumbs()` tamo gde želite da se prikažu breadcrumbs, obično u `header.php` fajlu vaše teme:
<?php custom_breadcrumbs(); ?>
Sačuvajte promene u `functions.php` i `header.php` fajlovima i osvežite vašu WordPress stranicu. Breadcrumbs bi trebalo da budu prikazani prema definisanom stilu.
Zaključak
U ovom tekstu smo vam prikazali nekoliko korisnih code snippet-a koje možete koristiti na svom WordPress sajtu za prilagođavanje ili dodavanje različitih funkcionalnosti.
Prednost code snippet-a je u tome što vam omogućavaju da ta prilagođavanja i funkcionalnosti uradite potpuno ručno, bez instalacije i aktivacije plugina.
Sa duge strane, code snippet-i zahtevaju da imate bar neko osnovno poznavanje koda, kako biste bili sigurniji u ono što radite na svom web sajtu.
Kao i uvek, zlatno pravilo je da pre bile kakve izmene ili dodavanja koda na vašem sajtu, uradite backup i na taj način obezbedite da u slučaju problema možete da se vratite na korak pre izmene.
Nenad Mihajlović