Plugin na propojení účtu Zoner a WordPressu – chráněný obsah
Firma Zoner, výrobce skvělého grafického softwaru na úpravu fotografií, mě oslovila, abych pro ně realizoval propojení účtu Zoner a jejich webů na WordPressu.
Propojení funguje poměrně jednoduše: na webu zoner.cz jsem přidal možnost u článků zvolit, že oprávnění k zobrazení článku mají jen uživatelé s platnou licencí Zoner. Pokud uživatel klikne na článek, je přesměrován na přihlášení na https://account.zoner.com, po přihlášení se přesměruje zpět do WordPressu s platným tokenem, ten se zpětně ověří přes API a získají se informace o uživateli a o tom, zda má platnou licenci.
Pokud se uživatel do WordPressu pokouší přihlásit poprvé, automaticky se mu vytvoří nový účet a nastaví správná oprávnění, pokud již uživatel existuje, aktualizují se informace o jeho licenci.
Pokud má platnou licenci, článek se zobrazí, pokud ne, zobrazí se informace o tom, že článek je přístupný jen uživatelům s platným oprávněním.
Požadavků na funkcionalitu “Některý obsah na webu je přístupný jen některým skupinám uživatelů” jsem za poslední dobu řešil několikrát, a téměř vždy pro tuto funkcionalitu používám filtr the_content, který umožňuje dynamicky měnit obsah článku / stránky. Tento filtr se hodí například i na dynamické vložení reklamy AdSense do článku nebo stránky.
Kód, který zajišťuje skrývání obsahu pro uživatele bez platné licence, tedy zjednodušeně vypadá cca takto:
[php]
// This is inside a class
add_filter(‘the_content’, array($this, ‘hide_if_no_subscription’));
function hide_if_no_subscription($content)
{
$user = new User();
$user->user_id = get_current_user_id();
// If the article needs a valid subscription and the user does not have it and is logged out
if ($this->needs_valid_zpsx() && !$user->has_valid_zpsx() && !is_user_logged_in()) {
// display some message
return $this->logged_out_message();
} else if ($this->needs_valid_zpsx() && !$user->has_valid_zpsx()) {
// if the user is logged in, but does not have a valid subscription, display different message
return $this->not_valid_license_message();
}
// The checks passed, return the original content
return $content;
}
// Check if subscription is needed to access the post
function needs_valid_zpsx()
{
global $post;
return get_post_meta($post->ID, ‘_zwp_zpsx_only’, true) == ‘on’;
}
[/php]
Součástí pluginu je samozřejmě i nastavení zpráv pro uživatele, aktualizace údajů přes API, pokud se uživatel přihlásí po více než 24 hodinách, shortcode pro zamykání obsahu přímo ve stránce a spousta dalších funckionalit.
Pokud potřebujete podobné řešení, nebo jiné úpravy WordPressu, neváhejte se na mě obrátit.
Václav Greif se programování pro Wordpress věnuje více než 16 let. Za tu dobu nasbíral mnoho zkušeností s tvorbou pluginů pro Wordpress, úpravou šablon a programováním komplexních funkcionalit. Věnuje se programování pro Wordpress a školení programátorů.