Opcje dla WooCommerce w ekranie personalizacji motywu

WooCommerce to tak popularna wtyczka, że dodanie dla niego wsparcia w motywie jest przez wielu developerów traktowane jako istotny punkt podczas tworzenia nowych motywów dla WordPressa.

Deklarację wsparcia WooCommerce w motywie realizujemy poprzez wykorzystanie funkcji add_theme_support:

add_action( 'after_setup_theme', 'woocommerce_support' );
function woocommerce_support() {
    add_theme_support( 'woocommerce' );
}

Skoro wspieramy w motywie WooCommerce, to z reguły mamy też opcje dedykowane dla tej wtyczki. Najlepiej umieścić je w jednej sekcji i panelu tak, by ułatwić do nich dostęp oraz łatwiej wyjaśnić ich przeznaczenie.

Panele, sekcje oraz ustawienia ekranu personalizacji motywu posiadają parametr theme_supports, który pozwala sprawdzić czy motyw wspiera daną funkcję – możemy zatem ukryć panel/sekcję z opcjami WooCommerce naszego motywu, gdy WooCommerce nie jest zainstalowany bądź jest nieaktywny. Wystarczy przy deklaracji np. sekcji nadać odpowiednią wartość parametrowi theme_supports:

$wp_customize->add_section(
    'woocommerce_options', 
    array(
        'title' => __('WooCommerce Settings'),
        'description' => __('Options dedicated for the WooCommerce plugin subpages'),
        'theme_supports' => array('woocommerce')
    )
);

W tym miejscu przypomnę tylko, że aby dana sekcja w ogóle się pojawiła, należy do niej dodać jeszcze co najmniej jedną kontrolkę korzystając z $wp_customize->add_control.

Jeżeli wykorzystaliśmy w naszym motywie kod z funkcją add_theme_support to powyższa sekcją powinna się pojawić w ekranie personalizacji naszego motywu. Niestety, jeżeli wyłączymy wtyczkę WooCommerce lub ją odinstalujemy, to ta sekcja będzie widoczna nadal, gdy tymczasem naszym celem jest pojawienie się tej sekcji tylko wtedy gdy WooCommerce jest aktywny w danej instalacji WordPressa.

Dlatego musimy troszkę zmodyfikować kod dodający wsparcie dla WooCommerce w motywie do następującej postaci:

add_action( 'after_setup_theme', 'woocommerce_support' );
function woocommerce_support() {
    if (
        !in_array(
            'woocommerce/woocommerce.php', 
            apply_filters('active_plugins', get_option('active_plugins'))
         )
    ) {
        return;
    }

    add_theme_support('woocommerce');
}

Dodaliśmy w naszym kodzie warunek, który sprawdza czy na liście aktywnych wtyczek występuje plik woocommerce.php – jeżeli nie występuje, to funkcja add_theme_support nie zostanie wywołana, a tym samym sekcja dedykowana WooCommerce nie pojawi się w ekranie personalizacji motywu.

Podsumowanie

Wiemy już, jak sprawić by poszczególne elementy ekranu personalizacji motywu pokazywały się tylko wtedy, gdy nasz motyw zainstalowany jest na WordPressie, który posiada aktywną wtyczkę WooCommerce. Warto pamiętać, że parametr theme_supports jest zaimplementowany głównie z myślą o wtyczkach, które dodają własne opcje do ekranu personalizacji motywu w określonych warunkach – zatem w ten sam sposób, możemy stworzyć wtyczkę, która doda dodatkowe opcje tylko wtedy gdy dany motyw posiada wsparcie dla określonych funkcji/wtyczek.

Ekskluzywne porady, triki i trendy bezpośrednio na Twoją skrzynkę odbiorczą. Adres e-mail

[shopmagic_form id="3782" name=false labels=false doubleOptin]

Ekskluzywne porady, triki i trendy bezpośrednio na Twoją skrzynkę odbiorczą. Adres e-mail

[shopmagic_form id="3782" name=false labels=false doubleOptin]