Strona główna  /  Motywy  /  Jak dodać własne opcje do Customizer w WordPress?

✦ AI
Monitor z panelem WordPress i fragmentami kodu na biurku, ilustrujący proces edycji motywu w Customizerze.

Jak dodać własne opcje do Customizer w WordPress?

Własne opcje w WordPress Customizer dodasz przez hook customize_register. Potrzebujesz trzech elementów: sekcji, ustawienia oraz kontrolki. Sekcja porządkuje opcję w panelu, ustawienie zapisuje jej wartość, a kontrolka udostępnia pole do edycji.

Dlaczego warto korzystać z Customizer API?

Customizer jest natywnym narzędziem WordPressa do konfiguracji motywu. Dodanie prostego pola bezpośrednio w kodzie nie wymaga instalowania rozbudowanego page buildera ani dodatkowego frameworka. Mniejsza liczba zależności zwykle oznacza prostszą konserwację i mniejszy narzut dla motywu.

Customizer API pozwala tworzyć między innymi pola tekstowe, pola wyboru, selektory kolorów i checkboxy. Wartości zapisane przez użytkownika można później pobrać w plikach szablonu.

Jak zbudowana jest hierarchia Customizera?

Każda własna opcja składa się z trzech powiązanych elementów. Ich kolejność ma znaczenie, ponieważ kontrolka musi wskazywać istniejące ustawienie, a ustawienie powinno należeć do konkretnej sekcji:

  • Sekcja – kontener widoczny w menu Customizera, który grupuje powiązane opcje.
  • Ustawienie – wartość konfiguracyjna zapisywana przez WordPress, na przykład tekst, kolor albo liczba.
  • Kontrolka – element interfejsu, taki jak pole tekstowe, checkbox lub próbnik koloru.

W praktyce stosujesz więc schemat add_section(), następnie add_setting(), a na końcu add_control(). Sama kontrolka nie zadziała bez przypisanego ustawienia i sekcji.

Jak dodać własną opcję do Customizera?

Poniższy przykład dodaje sekcję „Ustawienia nagłówka” oraz pole tekstowe na krótkie hasło wyświetlane w motywie. Kod możesz umieścić w pliku functions.php aktywnego motywu potomnego. Przy większym projekcie podobną funkcję można przenieść do dedykowanej wtyczki.

  1. Zarejestruj hook customize_register – WordPress wywołuje go podczas budowania panelu Customizera.
  2. Dodaj sekcję – określ jej identyfikator, tytuł i priorytet.
  3. Dodaj ustawienie – zdefiniuj domyślną wartość oraz funkcję sanitizującą.
  4. Dodaj kontrolkę – połącz pole tekstowe z ustawieniem i sekcją.
<?php
/**
 * Dodaje własną opcję do WordPress Customizer.
 *
 * @param WP_Customize_Manager $wp_customize Obiekt zarządzający Customizerem.
 */
function moja_motywowa_konfiguracja( $wp_customize ) {

    // 1. Dodanie sekcji w panelu Customizera.
    $wp_customize->add_section(
        'moja_sekcja_naglowka',
        array(
            'title'       => __( 'Ustawienia nagłówka', 'moja-motywowa' ),
            'description' => __( 'Konfiguracja tekstu nagłówka.', 'moja-motywowa' ),
            'priority'    => 30,
        )
    );

    // 2. Dodanie ustawienia zapisywanego przez WordPress.
    $wp_customize->add_setting(
        'moja_motywowa_haslo',
        array(
            'default'           => '',
            'sanitize_callback' => 'sanitize_text_field',
            'transport'         => 'refresh',
        )
    );

    // 3. Dodanie kontrolki pola tekstowego.
    $wp_customize->add_control(
        'moja_motywowa_haslo',
        array(
            'label'       => __( 'Hasło nagłówka', 'moja-motywowa' ),
            'description' => __( 'Wpisz tekst wyświetlany w nagłówku.', 'moja-motywowa' ),
            'section'     => 'moja_sekcja_naglowka',
            'type'        => 'text',
        )
    );
}
add_action( 'customize_register', 'moja_motywowa_konfiguracja' );

Najważniejsze jest spójne ID ustawienia. W przykładzie moja_motywowa_haslo występuje zarówno przy add_setting(), jak i przy add_control(). Jeśli wpiszesz inne identyfikatory, kontrolka nie będzie zapisywać oczekiwanej wartości.

Jak wyświetlić wartość w motywie?

Zapisane ustawienie pobierzesz funkcją get_theme_mod(). Pierwszy argument to ID ustawienia, a drugi – wartość domyślna używana wtedy, gdy użytkownik niczego jeszcze nie zapisał.

<?php
$haslo_naglowka = get_theme_mod( 'moja_motywowa_haslo', 'Witaj na naszej stronie' );

echo '<p class="header-slogan">' . esc_html( $haslo_naglowka ) . '</p>';
?>

Taki fragment możesz umieścić na przykład w header.php. Funkcja esc_html() zabezpiecza tekst przed wstawieniem niebezpiecznego kodu HTML. Gdy wartość ma trafić do atrybutu HTML, użyj esc_attr().

Na co uważać przy własnych opcjach?

Sanityzację definiuj już podczas rejestrowania ustawienia. Dla zwykłego tekstu sprawdzi się sanitize_text_field, dla liczby całkowitej absint, a dla adresu URL esc_url_raw. Funkcja powinna odpowiadać rodzajowi danych, które użytkownik może wpisać.

Stosuj własny prefiks w ID sekcji i ustawień, na przykład moja_motywowa_. Ogranicza to ryzyko konfliktu z motywem, wtyczką albo innym fragmentem kodu. Sprawdź też, czy kontrolka wskazuje właściwą sekcję, a po zapisaniu zmian odczytujesz dokładnie to samo ID za pomocą get_theme_mod().

Jeżeli opcja nie zapisuje się, najczęściej przyczyną jest literówka w identyfikatorze, brak funkcji podpiętej do customize_register albo nieprawidłowe umieszczenie kodu w pliku motywu. Po poprawnym zarejestrowaniu sekcji, ustawienia i kontrolki nowe pole powinno pojawić się w panelu Wygląd → Dostosuj.

Customizer API opiera się na prostym łańcuchu: sekcja porządkuje panel, ustawienie przechowuje wartość, a kontrolka pozwala ją zmienić. Po zapisaniu konfiguracji pobierasz dane przez get_theme_mod(), pamiętając o sanitizacji podczas zapisu i escapowaniu przy wyświetlaniu.

Redakcja wpinternals.pl

WordPressa znamy od kuchni – budujemy na nim strony, migrujemy serwisy i optymalizujemy ich wydajność. Piszemy o wtyczkach, motywach, hostingu i bezpieczeństwie tak, by poradzili sobie także początkujący. Dbamy o to, by Twoja strona była szybka, stabilna i bezpieczna.

Może Cię również zainteresować

Potrzebujesz więcej informacji?