Práce s uživateli ve WordPressu

Na WordPressu existuje pyramida uživatelských oprávnění, nejvyšší uživatelská role je administrátor, nejnižší je návštěvník, který má pouze profil. Mezi nimi jsou role spolupracovník, redaktor, šéfredaktor. Je také možné vytvořit redakční radu, protože úpravy provedené redaktorem musí schválit a vydat šéfredaktor.

Obsah

  1. Jak WordPress uživateli nastavit práva
  2. Testování pod jiným uživatelem
  3. Vyřazený uživatel
  4. Aplikační hesla uživatele

Jak WordPress uživateli nastavit práva

Ani šéfredaktor ale nemůže měnit nastavení webu. Pracuje pouze s příspěvky a stránkami, nemá přístup do nastavení vzhledu nebo konfigurace pluginu. To se ale dá změnit. Jednotlivé uživatelské role jsou sestaveny z oprávnění – capabilities. Jsou to jednotlivá práva, jsou jich desítky až stovky a jejich seskládáním dohromady je tvořena samotná uživatelská role. Je zcela normální, že mnohé pluginy si vytvářejí vlastní role, namátkou WooCommerce, Rank Math SEO, Yoast a mnohé další.

Vlastní roli si můžete tedy sestavit i vy sami. Pokud byste webové stránky programovali sami, pak byste zřejmě použili vlastní přístupová práva k různým funkcím a z nich se stavěli roli. I když jsou stránky už hotové, stále tento princip můžete využít a roli si sestavit. Potřebujete k tomu editor uživatelských rolí a rámcově vědět, jaká jednotlivá oprávnění máte k dispozici. Například Ninja forms nemá vlastní roli, ale má vlastní oprávnění. Týká se to i mnoha dalších pluginů.

To tedy znamená, že k výsledkům odeslaných formulářů se nedostane ani šéfredaktor, ale díky tomu, že existuje oprávnění, které to umožňuje, můžete si vlastní roli sestavit a uživateli ji přidělit. Když uživatel tak může mít roli šéfredaktor a třeba roli správce Ninja forms.

Testování pod jiným uživatelem

Při zprávě webu nastane dříve nebo později situace, kdy se dozvíte že určitému uživateli něco nefunguje. I když jste vše pečlivě nastavili a otestovali, vašemu uživateli vše funguje, někdo vám bezesporu nahlásí, že jemu to nefunguje. Bude tedy vhodné situaci prověřit přímo pod daným uživatelem. Bude ovšem také vhodné neměnit danému uživateli heslo, někdy to může nabourat důvěru člověka, který uživatele používá – proč mu správce mění heslo? Ve WordPressu naštěstí máme lepší možnost, a to je použití pluginu pro přepnutí identity. Jednoduše řečeno se na chvíli přepnete na jiného uživatele, vše pak vidíte jeho očima. Nejznámější plugin tohoto typu je User Switching.

Vyřazený uživatel

Každá spolupráce jednou skončí a i vy dostanete požadavek smazat daného uživatele z webu. To nelze brát úplně doslova, respektive je potřeba se předem zamyslet, zda uživatele skutečně smažete. S ním byste totiž smazali i všechen jeho obsah, což je nežádoucí. Známe mnoho urban legends, které škodolibě připomínají, že nejeden správce se smazáním uživatele číslo 1 smazal také veškerý obsah webu, který tento uživatel v minulosti vytvořil. To znamená zejména titulní stránku dělanou v Elementoru, kontaktní stránku a všechny další klíčové komponenty obsahu. Dejte si tedy pozor.

Uživatel ve WordPressu nemusí mít žádnou roli. Pokud tedy chcete někoho takzvaně smazat, zkuste mu spíše odebrat veškerá oprávnění, respektive role. Nebude schopen se ani přihlásit. Pro jistotu také v jeho profilu smažte všechny jeho přihlášené relace a změňte emailovou adresu, aby si nemohl vygenerovat nové heslo.

Aplikační hesla uživatele

Každý uživatel má kromě hesla také možnost využívat pro přístup aplikační heslo. S ním se nepřihlásíte do aplikace WordPress na adrese /wp-admin/, ale můžete poslat dotaz na REST API, které vám vrátí data. Heslo se nastavuje v profilu každého uživatele.

Aplikační heslo pro WordPress uživatele
Aplikační heslo

Plugin Wordfence tuto možnost zakazuje s cílem zvýšit bezpečnost, takže pokud nastavení hesel v profilu nevidíte a používáte WF, zkontrolujte si jeho nastavení (Wordfence > Firewall > Ochrana před brute force > Zakažte hesla aplikací WordPress).

WordFence aplikační hesla obvykle blokuje
WordFence aplikační hesla obvykle blokuje

Jak to využít? Představte si, že chcete zobrazit data odeslaná přes váš formulář (=odpovědi, submissions), resp. tato data dostat do nějaké aplikace a dále s nimi pracovat.

Dotaz tohoto typu nelze poslat pouhým zadáním adresy (metoda GET), protože musíte přidat autorizační hlavičky a některé požadavky se posílají metodou POST. K tomu lze využít aplikace jako Postman, ale bohatě stačí také doplněk pro VS Code, třeba Postcode (je jich ale víc). Pokud byste chtěli použít nějaký informační systém, ten už to obvykle bude umět a dotaz pošle správně (vše obvykle probíhá pomocí programu cURL).

Jako základní adresy slouží vstupní body REST API. Základní adresa je /wp-json/, když chceme získat data z Ninja forms, je v adrese ještě ninja-forms-submissions, pak submissions a nakonec ještě čísla formulářů. Celá url tedy vypadá takto:

http://xxxx.cz/wp-json/ninja-forms-submissions/submissions/get?type=data&form_ids=2

Na obrázku vidíte, jak požadavek pošleme pomocí doplňku Postcode ve VS Code.

Odesílání požadavku na REST API
Odesílání požadavku na REST API

V kolonce Password je aplikační heslo, které jste si vytvořili dříve. Pokud uživatel nemá oprávnění, aby přistupoval k datům Ninja forms, viz předchozí text, pak získáte pouze odpověď

{"code":"rest_forbidden","message":"Nem\u00e1te dostate\u010dn\u00e9 opr\u00e1vn\u011bn\u00ed pro proveden\u00ed t\u00e9to akce.","data":{"status":403}}

Schválně ji nechávám escapovanou, ta hláška ale je „Nemáte dostatečná oprávnění pro provedení této akce.“. To říká WordPress, není to firewall. Jste moc malý uživatel.

Zrovna Ninja Forms to má blbě řešené, vyšší práva si musíte nastavit sami pomocí hooku (tento pro REST API, v administraci data pořád neuvidíte, na to je jiný hook uvedený v ukázce):

add_filter( 'ninja_forms_api_allow_get_submissions', 'nf_define_permission_level', 10, 2 );

function nf_define_permission_level() {
  
  $allowed = \current_user_can("edit_posts"); // nebo jiné oprávnění
  
  return $allowed;
}

Nenastavujte uživateli administrátora! To pak postrádá smysl použití samotných aplikačních hesel.

Poté byste už měli dostat odpověď ve formátu JSON. Nejprve jsou vidět políčka formuláře, uvnitř je i odeslaná hodnota. Převod do jiných dat a zpracování je pak už jiná kapitola.

Smyslem bylo demonstrovat využití aplikačních hesel, samozřejmě tak můžete získat různá data z WooCommerce, SEO pluginů a dalších komponent.

Newsletter Rádce pro správce

Každou středu rozesíláme část svého know-how, které jsme pracně získali během posledních let. Zadarmo každému, kdo má zájem stát se zkušeným správcem WordPressu. Není určený našim zákazníkům, nýbrž našim kolegům v oboru. Vracíme tak komunitě to, co jsme získali od jiných. Podívejte se do jeho archivu.