Stránka s náhodným obsahem

V rubrice: Tipy & Triky | Obtížnost:

Dejte uživateli možnost přečíst si cokoliv a ať náhoda rozhodne o tom, co to bude. Výkonnostně to nebude dosahovat na ručně vybírané podobné příspěvky, ale pokud bude pokud máte čtenáře s dobrou karmou…

Každý web řeší zásadní problém – udržet si návštěvníka a nepustit ho někam jinam. Vždycky musí existovat nějaký další obsah, který se dá přečíst. Čtenáře lze nalákat na „podobné články“ nebo příspěvky ze stejné rubriky, ale je tu rovněž šance ho poslat na úplně náhodný obsah. Ten sice není příliš personifikovaný, ale zase je velice univerzální. Chceš číst dál? Něco ti hned ukážu…

Lze použít v zásadě dva přístupy, jak se k problému postavit

Přesměrování

Jednodušší cesta je, že pokud uživatel přistoupí na určitou adresu, provedeme přesměrování na náhodný článek. Nemělo by jít o přesměrování trvalé, aby si ho uživatelům prohlížeč nenacachoval a neposílal pořád na jeden a tem samý příspěvek.

Lze použít jednoduchý kód do functions.php:

function randomRedirect()
{
    if ($_SERVER['REQUEST_URI'] == '/random') {
        $posts = get_posts(
            array(
                'posts_per_page' => 1,
                'post_type' => 'post',
                'post_status' => 'publish',
                'orderby' => 'rand'
            )
        );
        wp_redirect(get_permalink($posts[0]->ID));
        exit();
    }
}
add_action('init', 'randomRedirect');

Vždy pokud je url /random, WordPress uživatele přesměruje na náhodnou stránku.

Opravdové zobrazení

Další možností je, že uživatele jako takového nepřesměrujete, ale na dané stránce mu zobrazíte jiný obsah. To je o něco složitější, ale zase je výhoda v tom, že po každém refreshi se načte nový obsah. Vše se dá vyřešit přes custom page (jak na to jsem zmiňoval v tutoriálu o vytváření šablon).

<?php /* Template Name: Náhodná stránka */ ?>

Dalším úkolem je najít náhodný příspěvek a nastavit ho do hlavní query. Takto si bude WordPress „myslet“, že nezobrazuje custom page, ale detail určitého článku.

<?php
$posts = get_posts(
    array(
        'posts_per_page' => 1,
        'post_type' => 'post',
        'post_status' => 'publish',
        'orderby' => 'rand',
        'fields' => 'ids'
    )
);
query_posts('p=' . $posts[0]);
?>

A jako poslední krok je nutné použít šablonu příspěvku. Ta se často jmenuje single.php, ale může být i singular.php či dokonce index.php, záleží na šabloně.

<?php get_template_part('single'); ?>

A pak už stačí jen v administraci založit stránku s vytvořenou šablonou. Nemusíte se zabývat obsahem nebo nadpisem. Jediné co ze stránky zůstane je její url, všechno ostatní bude přepsáno dle náhody. Je možné, že se stránkou budou mít problém vyhledávače, takže byste měli robotům zakázat, aby ji vůbec navštěvovali.

V rubrice: Tipy & Triky | Obtížnost: