Wtyczek do zarządzania uprawnieniami użytkowników (indywidualnie, jak i w ramach grup użytkowników) do WordPressa jest pełno, i pewnie w większości przypadków opcje jakie oferują są wystarczające, choć operują one tylko na uprawnieniach dostępnych w WordPressie (podobny efekt można uzyskać za pomocą „kilku linijek kodu”).
Są jednak sytuacje, gdy standardowo dostępne uprawnienia są niewystarczające – np. w uprawnieniach związanych z wtyczką WooCommerce (wtyczka pozawala zmienić WordPressa w sklep internetowy) możemy zablokować/przyznać wiele uprawnień, ale już ograniczenie dostępu „pracownikom obsługującym sklep” do ustawień samego WooCommerce może stanowić problem…
Blokujemy ustawienia WooCommerce
Za pomocą wtyczek typu „user role editor”, które pracują na standardowo dostępnych uprawnieniach znajdziemy wiele opcji dotyczących praktycznie wszystkich aspektów pracy z WordPressem/WooCommerce. Są jednak takie sytuacje/miejsca, gdy operacje na standardowych uprawnieniach niewypatraszającą.
Dobrym przykładem będzie np. funkcja menadżera sklepu WooCommerce (shop manager), czyli osoba, która powinna móc zarządzać zamówieniami, kontaktem z użytkownikami, ew. tworzeniem i modyfikacją produktów dostępnych w sklepie. Ale takla osoba niekoniecznie powinna mieć możliwość zmiany głównych ustawień WooCommerce, takich jak kwestie podatków, systemowych wiadomości e-mail, itp.
W standardzie niestety jedyna opcja, która pozwala zablokować dostęp do ustawień sklepu (WooCommerce) to „manage_woocommerce” – wyłączenie tego uprawnienia jednak sprawia, że taki użytkownik traci całkowity dostęp do WooCommerce, a nawet panelu zarządzania WordPressem.
W takim przypadku trzeba sięgnąć po haki/filtry, dzięki którym będziemy mogli wyłączyć dla danej grupy użytkowników dostęp do ustawień WooCommerce.
Wystarczy w pliku functions.php (lub w ramach własnej wtyczki, najlepiej must-use):
add_filter( 'woocommerce_get_settings_pages', 'webinsider_wp_woocommerce_block_woocommerce_system_s_tools' );
function webinsider_wp_woocommerce_block_woocommerce_system_s_tools( $current_tab ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $current_tab;
}
Powyższy fragment zablokuje dostęp do wszystkich kart w ramach:
- WooCommerce -> Ustawienia
Możecie też wybrać pojedyncze karty (a nawet opcje w kartach, ale aż tak nie będę się rozpisywał):
Ustawienia główne
add_filter( 'woocommerce_general_settings', 'webinsider_wp_woocommerce_block_woocommerce_general_settings' );
function webinsider_wp_woocommerce_block_woocommerce_general_settings( $settings ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $settings;
}
Podatek
add_filter( 'woocommerce_get_sections_tax', 'webinsider_wp_woocommerce_block_woocommerce_tax_settings' );
function webinsider_wp_woocommerce_block_woocommerce_tax_settings( $settings ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $settings;
}
Wysyłka
add_filter( 'woocommerce_get_sections_shipping', 'webinsider_wp_woocommerce_block_woocommerce_shipping_settings' );
function webinsider_wp_woocommerce_block_woocommerce_shipping_settings( $settings ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $settings;
}
API
add_filter( 'woocommerce_get_sections_api', 'webinsider_wp_woocommerce_block_woocommerce_api_settings' );
function webinsider_wp_woocommerce_block_woocommerce_api_settings( $settings ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $settings;
}
add_filter( 'woocommerce_email_settings', 'webinsider_wp_woocommerce_block_woocommerce_email_settings' );
function webinsider_wp_woocommerce_block_woocommerce_email_settings( $settings ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $settings;
}
Zamówienia
add_filter( 'woocommerce_get_sections_checkout', 'webinsider_wp_woocommerce_block_woocommerce_checkout_settings' );
function webinsider_wp_woocommerce_block_woocommerce_checkout_settings( $settings ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $settings;
}
Konta
add_filter( 'woocommerce_account_settings', 'webinsider_wp_woocommerce_block_woocommerce_account_settings' );
function webinsider_wp_woocommerce_block_woocommerce_account_settings( $settings ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $settings;
}
Produkty
add_filter( 'woocommerce_get_sections_products', 'webinsider_wp_woocommerce_block_woocommerce_products_settings' );
function webinsider_wp_woocommerce_block_woocommerce_products_settings( $settings ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $settings;
}
Na koniec warto jeszcze pomyśleć o blokadzie menu:
- WooCommerce -> Status systemu
Gdzie oprócz odczytania kilku informacji o systemie, użytkownik mający dostęp do tej opcji może trochę narozrabiać (oczywiście niechcący ;-)):
add_filter( 'woocommerce_admin_status_tabs', 'webinsider_wp_woocommerce_block_woocommerce_system_status_tools' );
function webinsider_wp_woocommerce_block_woocommerce_system_status_tools( $current_tab ) {
if ( current_user_can('shop_manager') ) {
die( '<strong>Dostęp zablokowany</strong>' );
}
return $current_tab;
}
Dzięki temu uprawnienia do większości opcji możecie ustawić za pomocą ulubionej wtyczki do zarządzania uprawnieniami, a do tego pracownikowi, który ma obsługiwać zamówienia zablokować dostęp do głównych ustawień sklepu (WooCommerce).
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01