Envato Elements - pobierasz co chcesz, ile chcesz

Przed Wami kolejny wpis z cyklu „drobna rzecz, a przydatna”, i jak to często w takich przypadkach bywa – pomysł na wpis wziął się z potrzeby, i będzie niejako kontynuacją wpisu dotyczącego dostępu do ustawień WooCommerce dla wybranych grup użytkowników, z tym, że tym razem będziemy nakładać blokadę na dostępne podczas dodawania nowego użytkownika role (użytkowników).

WordPress i ograniczone tworzenie nowych użytkowników

W jednym ze sklepów którymi zarządzam pojawiła się potrzeba by zwiększyć trochę uprawnienia obsłudze, o możliwość dodawania/tworzenia nowych użytkowników – to akurat można zrobić za pomocą licznych wtyczek, czy za pomocą własnego kawałka kodu (może kiedyś jakiś wpis o tym będzie). Większość tego typu programów opiera się na dostępnych w WordPressie (i dodatkach, jak np. WooCommerce) uprawnieniach, które możemy przypisywać (bądź zabierać) zarówno pojedynczym użytkownikom, jak i konkretnym grupom (role).

Problem pojawia się w sytuacji, gdy potrzebujemy wyjść poza te ramy – tu wprawdzie zazwyczaj w tego typu wtyczkach nic sobie nie wyklikamy (choć nie wykluczam, że są i tego typu wtyczki z interfejsem graficznym), ale na szczęście wystarczy kilka linijek kodu, które mam nadzieję wszyscy wiedzą jak możemy dodać do swojej strony.

add_filter( 'editable_roles', 'webinsider_wp_limit_user_create_user_role' );
function webinsider_wp_limit_user_create_user_role( $roles ){
    $user = wp_get_current_user();
    if( in_array( 'shop_manager', $user->roles )){
        unset( $roles[ 'administrator' ]);
        unset( $roles[ 'shop_manager' ]);
        unset( $roles[ 'author' ]);
        unset( $roles[ 'editor' ]);
        unset( $roles[ 'contributor' ]);
    }
    return $roles;
}

W powyższym przykładzie użytkownik należący do grupy „menedżer sklepu” (shop_manager) podczas tworzenia nowego użytkownika nie będzie mógł dla niego wybrać roli/uprawnień przypisanych do:

  • Administrator (administrator)
  • Menedżer sklepu (shop_manager)
  • Autor (author)
  • Edytor (editor)
  • Współpracownik (contributor)

Dostępne są wszystkie pozostałe, np. „klient” (customer), co akurat w tym przypadku jest wystarczającą rolą dla tworzonych użytkowników.

Można też ten kod zmodyfikować – zamiast sprawdzać do jakiej grupy należy użytkownik, sprawdzić, do jakiej nie należy:

add_filter( 'editable_roles', 'webinsider_wp_limit_user_create_user_role' );
function webinsider_wp_limit_user_create_user_role( $roles ){
    $user = wp_get_current_user();
    if( !in_array( 'administrator', $user->roles )){
        unset( $roles[ 'administrator' ]);
        unset( $roles[ 'shop_manager' ]);
        unset( $roles[ 'author' ]);
        unset( $roles[ 'editor' ]);
        unset( $roles[ 'contributor' ]);
    }
    return $roles;
}

W tym przypadku zasady (ograniczenia) są identyczne, z tym, że dotyczą każdego użytkownika, który nie należy do grupy „Administratorzy” (administrator).

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Monika ćwiczy przed kongresem ko..., ale jej też należy się zniżka 80% na skięgowość wFirma dla oglądających WebInsider.pl
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Janusz i Janusz zapisali się do Newslettera WebInsider.pl i... sobie chwalą