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.

Přidat komentář