Hrátky s RSS kanálem


Pokud nepatříte mezi zasvěcené, přečtěte si třeba článek na Rootu. Bez něj vlastně nebudete vědět “vo co go”, takže ho hezky přelouskejte. Ušetří vám hodně času.

WordPress je s RSS čtečkami velký kamarád a přece většina uživatelů odebírá pouze hlavní kanál. Možná ani netuší, jak jednoduché je hezky si všechno nastavit. Můžete si vybrat z jaké rubriky, jakými tagy oštítkované články chcete mít. Pro wordpress a IT světem nepolíbené můžete vytvořit speciální stránku, kde jim bude vygenerováno url, podle jejich voleb.

K tomu účelu si vytvoříme vlastní šablonu stránky. Nejlépe, když založíte nový soubor libovolného názvu, překopírujete do něj obsah page.php a úplně nahoru přidáte něco ve stylu:

/*
* Template Name: RSS Kanály
*
*
*/

Tím si připravíte novou šablonu stránky. Musíme nějak nahradit běžně vypisovaný obsah možnostmi pro zvolení svého vlastního feedu. The_content tedy nahradíme:

<form action='' method='post'>
    <strong>Rubriky:</strong><br>
    <?php
    $categories = get_categories();
    foreach ($categories as $category) {
        echo '<label><input type="checkbox" name="c' . $category->term_id . '">' . $category->cat_name . '</label>';
    }
    ?>
    <div style='clear: both'></div>
    <br><strong>Štítky:</strong><br>
    <?php
    $tagy = get_tags();
    foreach ($tagy as $tag) {
        echo '<label><input type="checkbox" name="t' . $tag->slug . '">' . $tag->name . '</label>';
    }
    ?>
    <div style='clear: both'></div>
    <br><strong>Hledaná slova:</strong></br>
    <input type='text' value='' name='h'><br><br>
    <input type='hidden' value='' name='odeslat'>
    <input type='submit' value='Odeslat'>
    <br>
</form>

Nyní máme uživatelské rozhraní, pomocí kterého si uživatel vybere, co chce odebírat. Samotné provedení má pak na starosti tento script:

if (isset($_POST['odeslat'])) {
    $url = bloginfo('wpurl') . "/?feed=rss2";
    $cat = "&cat=";
    $tag = "&tag=";
    foreach ($_POST as $key => $item) {
        $typ = substr($key, -(strlen($key)), 1);
        if ($typ == 't')
            $tagy .= substr($key, 1) . ",";
        elseif ($typ == 'c')
            $caty .= substr($key, 1) . ",";
        elseif ($typ == 'h')
            $s.= "&s=" . str_replace(
                            array('Á', 'Ä', 'É', 'Ë', 'Ě', 'Í', 'Ý', 'Ó', 'Ö', 'Ú', 'Ů', 'Ü', 'Ž', 'Š', 'Č', 'Ř', 'Ď', 'Ť', 'Ň', 'Ľ', 'á', 'ä', 'é', 'ë', 'ě', 'í', 'ý', 'ó', 'ö', 'ú', 'ů', 'ü', 'ž', 'š', 'č', 'ř', 'ď', 'ť', 'ň', 'ľ'), array('a', 'a', 'e', 'e', 'e', 'i', 'y', 'o', 'o', 'u', 'u', 'u', 'z', 's', 'c', 'r', 'd', 't', 'n', 'l', 'a', 'a', 'e', 'e', 'e', 'i', 'y', 'o', 'o', 'u', 'u', 'u', 'z', 's', 'c', 'r', 'd', 't', 'n', 'l'), $item);;
    }
    if ($tagy != "") {
        $tag .= substr($tagy, 0, -1);
        $url.=$tag;
    }
    if ($caty != "") {
        $cat .= substr($caty, 0, -1);
        $url.=$cat;
    }
    if ($s != "&s=") {
        $url .= $s;
    }
    header("location: $url");
}

Kód vložíme na začátek stránky. V administraci page založte novou stránku, vymyslete nějaký hezký název a vyberte šablonu RSS kanály.