, ,

Skrytí části obsahu pro nepřihlášené návštěvníky

Jedním z často řešených problémů ve WordPressu, je zobrazení, nebo skrytí části obsahu pro přihlášené, či nepřihlášené uživatele. Doporučují se různé pluginy, jenž jsou nezřídka zbytečně robustní a jejich použití zatěžuje WordPress dalším zbytečným kódem. Netvrdím, že nemají své místo, pokud potřebujete mít například uživatelský…

Obsah článku

Přidejte záhlaví a začněte generovat tabulku obsahu

Jedním z často řešených problémů ve WordPressu, je zobrazení, nebo skrytí části obsahu pro přihlášené, či nepřihlášené uživatele. Doporučují se různé pluginy, jenž jsou nezřídka zbytečně robustní a jejich použití zatěžuje WordPress dalším zbytečným kódem.

Netvrdím, že nemají své místo, pokud potřebujete mít například uživatelský účet na frontendu, ale co když nic takového nepotřebujete.

Stačí vám jen skrýt reklamní prvek v článku, aby neobtěžoval zaregistrované čtenáře? Řada těchto pluginů neumí skrývat jen část obsahu.

Naštěstí má WordPress k dispozici shortkódy a dnes vám ukáži, jak jeden takový vytvořit a skrýt s ním část obsahu pro přihlášené uživatele.

Shortcode

Samotnou funkci pro shortcode musíme nejprve zaregistrovat pomocí add_shortcode

add_shortcode('hide-content', 'hide_content' );

Dalším krokem je samotná funkce shortcodu:

function hide_content($atts, $content){

    $logged = true;
    if(!empty($atts['logged'])){
        if($atts['logged'] == 'no'){
           $logged = false;
        }
    }
    $show = true;
    if(!empty($atts['show'])){
        if($atts['show'] == 'no'){
           $show = false;
        }
    }

    //Content for logged user
    if($logged){

        if(is_user_logged_in() && $show === true){

            return do_shortcode($content);

        }

    }else{
    //Content for non logged user

        if(!is_user_logged_in() && $show === true){

            return do_shortcode($content);

        }

    }

  }

Vysvětlení funkce:
V shortcodu budeme používat dva atributy, „logged“ pro určení, zda se jedná o prihlášeného uživatele a atribut „show“, kterým určíme, zda se má obsah zobrazit, či ne.

Nyní máme k dispozici shortcode, do kterého „obalíme“ obsah, který chceme skrýt pro přihlášeného uživatele:

[hide-content logged="yes" show="no"]

Obsah vidíte, protože jste nepřihlášení!

[/hide-content]

A to je vše. Pro nepřihlášené skryjete obsah analogicky.

Dovedu si představit model – zaregistrujte se a zmizí všechny otravné reklamy 🙂

4 komentáře: „Skrytí části obsahu pro nepřihlášené návštěvníky“

  1. Radek P. avatar

    Jednoduché, elegantní. Zrovna nedávno jsem uvažoval, jak vlastně skrývání částí obsahu funguje. Plugin se mi používat nechtělo. Díky zaneprázdnění jsem to nedořešil. Tj. díky, už nemusím, naservírováno až pod nos

  2. Ivo avatar

    Parádní článek, přesně takové řešení bych potřeboval, pluginy jsou zlo, ale mám pro tebe asi triviální otázku – kam ten kód mám napsat? Do nějakého init.php či něco podobného? Zdrojáky WP jsem se nikdy moc neprobíral..

  3. Jirka avatar
    Jirka

    Ahoj, děkuju za článek. Chtěl bych se zeptat, jak by se dalo vyřešit menu? Představoval bych si to tak, že bych měl v menu položku „Registrace/přihlášení“, po kliknutí bych na stránce měl shortcody s registrací a loginem. Pokud by se uživatel přihlásil, tzn.: logged=true, položka v menu by se změnila na „Odhlásit“.
    Za každou radu budu vděčný, popřípadě, jestli na to existuje plugin?
    Děkuji

  4. Meny avatar

    Paráda, přesně tenhle ćlánek jsem hledal. Děkuji moc za rady a těším se na další nové posty.