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;
}

E-mail

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).

Zgłoś błąd na stronie

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.