Select Page

Mám na WordPress webe vlastný typ obsahu (custom post type) s názvom „Univerzity“ resp. „Universities“. A potrebujem do menu dostať link, ktorý ma po kliknutí naň, presmeruje na náhodný článok spomedzi všetkých vo vlastnom typu obsahu – v mojom prípade na náhodnú univerzitu.

Pluginy, ktoré som otestovala, mi nevyhovovali. Random Redirect Matta Mullenwega slúži len na presmerovanie na náhodný článok (post), funkcia random_post_type mi na webe nefungovala, a navyše plugin nebol už 11 (!) rokov aktualizovaný. Robert Peake je autorom pluginu Better Random Redirect, ktorý z Random Redirect vychádza a bol nedávno aktualizovaný, ale na tomto webe mi nefungoval. Tak som sa rozhodla, že to spravím jednoducho a bez pluginu.

Ako to bude fungovať?

Budeš mať stránku (page), ktorá bude zverejnená pod tvojou vlastnou šablónou (Page attributes > Template). Vždy keď otvoríš URL tej stránky, presmeruje ťa na náhodný článok.

V prvom rade potrebuješ mať vyrobený vlastný typ obsahu (custom post type). Ak chceš túto funkciu použiť na obyčajné články, bude to fungovať. Ąko som už spomínala, môj typ obsahu sa nazýva „University“ a aj slug má /university. Spomínam to hlavne preto, lebo budeme vytvárať aj stránku a na tú chceme použiť iný slug.

Teraz je na rade php template. Ak chceš vidieť, ako vyzerajú už existujúce templaty na tvojom webe, otvor si FTP klienta a otvor priečinok s témou, ktorú používaš: /wp-content/themes/tvoja-téma/. Otvor si napríklad page.php.

Takto sa načítava každá stránka (page) na tvojom webe. Pravdepodobne máš na vrchu šablóny komentár, za ním funkciu get_header() (zobrazí header), potom kód na zobrazenie obsahu stránky a na záver get_header(), ktorá zobrazí pätku. Takto vyzerá php šablóna stránky pre tému Twenty Nineteen.

Tu začína návod

Vytvor súbor v tvojom obľúbenom textovom editore (napr. Sublime, PHP Storm, Brackets, TextEdit, Notepad).

Skopíruj kód nižšie. Žiaden get_header() ani nič podobné tu nie je, vzhľadom na to, že sa chceme hneď presmerovať.

<?php 
/* Template Name: Random University */

$randomPost = get_posts(array(
    'numberposts' => 1,
    'post_type' => 'university', // this sets the post type
    'orderby' => 'rand'
));
foreach ($randomPost as $post) {
 wp_redirect(get_permalink($post->ID));
 exit();
}
?>

Uprav kód nasledovne:

  • Za „Template Name:“ napíš názov svojej šablóny. Zameň môj názov „Random University“ za čokoľvek, čo ti vyhovuje. Pod týmto menom sa bude zobrazovať v back-ende.
  • Zvoľ typ obsahu. Ak chceš náhodne zobrazovať typ obsahu, potrebuješ vedieť, pod akým slovom je tento typ obsahu registrovaný. Vymeň ‘university’ za tvoj vlastný názov.
  • Ulož kód ako tvoj-názov.php do súboru s témou /wp-content/themes/tvoja-tema/ (silno odporúčam použiť child tému).

Teraz vytvor stránku s iným slugom ako má tvoj vlastný typ obsahu. Daj stránke názov, v šablónach vyber tvoju novo vytvorenú (už by tam mala byť) a zverejni stránku.

Keď teraz otvoríš túto novú stránku, presmeruje ťa na náhodný článok. URL tejto stránky môžeš vložiť, kam potrebuješ: napríklad do menu, ako link do buttonu, atď.

Zdroje: