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 🙂