Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)

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