Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)

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
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)
Patryk
Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)