Chcesz, aby klienci trafiali na konkretną stronę po zalogowaniu, lub potrzebujesz dodać link lub skrypt do strony logowania. Custom Login for WooCommerce zapewnia haki do obu tych celów, dzięki czemu nie musisz edytować plików wtyczki. Posiada również punkt końcowy REST API, który odczytuje i aktualizuje ustawienia wtyczki z kodu.
Ten artykuł obejmuje filtr clwc_login_redirect, akcje clwc_after_login_form i clwc_login_footer oraz punkt końcowy REST API /settings. W krótkiej tabeli wymieniono również trzy mniejsze haki. Konfiguracja samej strony logowania jest opisana w Pierwsze kroki z Custom Login for WooCommerce.
Wymagania wstępne
| Wymaganie | Szczegóły |
|---|---|
| Wtyczka | Custom Login for WooCommerce w wersji 1.0.3 lub nowszej, zainstalowany i aktywny |
| WooCommerce | Wersja 6.0 lub nowsza, zainstalowana i aktywna |
| Dostęp | Sposób dodawania kodu PHP, na przykład niestandardowa wtyczka lub motyw potomny |
| Dostęp do REST API | Konto z uprawnieniem manage_woocommerce dla punktu końcowego REST API |
Jak haki pasują do strony logowania
Wtyczka obsługuje Twoją stronę /login z własnego, samodzielnego szablonu. Ten szablon nie ładuje nagłówka ani stopki Twojego motywu i nie wywołuje wp_head() ani wp_footer(). Dlatego wywołanie zwrotne dodane do wp_head lub wp_footer nigdy nie działa na tej stronie. Zamiast tego użyj poniższych haków wtyczki.
Pamiętaj, że filtr przekierowania działa podczas wysyłania formularza, podczas gdy dwie akcje działają podczas wyświetlania strony logowania.
Filtr: clwc_login_redirect
Ten filtr zmienia miejsce, do którego klient trafia bezpośrednio po pomyślnym zalogowaniu. Nie działa, gdy logowanie się nie powiedzie.
apply_filters( 'clwc_login_redirect', $redirect_to, $user );
| Parametr | Typ | Opis |
|---|---|---|
$redirect_to | string | Adres URL, na który klient ma zostać wysłany |
$user | WP_User | Konto, które właśnie się zalogowało |
Zwróć adres URL, który chcesz. Początkową wartością $redirect_to jest wartość redirect_to przekazana do strony logowania, na przykład twojsklep.com/login/?redirect_to=.... Jeśli jej nie ma, jest to adres URL strony Moje konto WooCommerce.
Oto, co dzieje się po zwróceniu przez Twoje wywołanie zwrotne:
- Następnie działa własny filtr WooCommerce
woocommerce_login_redirect. Każde wywołanie zwrotne w tym filtrze widzi Twój wynik i może go ponownie zmienić. - Wtyczka sprawdza ostateczny adres URL. Jeśli wskazuje na inny domenę, której WordPress nie zezwala, wtyczka wysyła klienta na stronę Moje konto.
- Wtyczka przekierowuje klienta.
Przykład: wyślij menedżerów sklepu do panelu
add_filter( 'clwc_login_redirect', function ( $redirect_to, $user ) {
if ( in_array( 'shop_manager', (array) $user->roles, true ) ) {
return admin_url();
}
return $redirect_to;
}, 10, 2 );
10 to priorytet wywołania zwrotnego, a 2 informuje WordPress, że Twoje wywołanie zwrotne akceptuje dwa parametry. Bez 2 nie otrzymasz $user.
Akcje: clwc_after_login_form i clwc_login_footer
Obie akcje pozwalają na umieszczenie własnego kodu HTML na stronie logowania. Żadna z nich nie przekazuje parametrów, więc Twoje wywołanie zwrotne nie wymaga argumentów. Wyświetl swoją zawartość za pomocą echo.
| Akcja | Gdzie się uruchamia |
|---|---|
clwc_after_login_form | Bezpośrednio po zamykającym tagu </form>, nadal wewnątrz panelu formularza logowania. Treść pojawia się pod formularzem. |
clwc_login_footer | Po całym układzie dwupanelowym, blisko końca strony. Treść nie znajduje się w żadnym z paneli. |
Przykład: dodaj link pod formularzem logowania
add_action( 'clwc_after_login_form', function () {
echo '<p><a href="' . esc_url( home_url( '/become-a-customer/' ) ) . '">Need an account? Apply here.</a></p>';
} );
Przykład: dodaj linię tekstu do stopki strony
add_action( 'clwc_login_footer', function () {
echo '<p style="text-align:center;">Need help? Call us on 1300 000 000.</p>';
} );
Inne haki na stronie logowania
Te haki są mniejsze i rzadziej używane. Działają tak samo jak powyższe akcje i filtry.
| Hak | Typ | Co robi |
|---|---|---|
clwc_logout_redirect | Filtr | Zmienia miejsce, do którego klienci są przekierowywani po wylogowaniu. Otrzymuje domyślny adres URL, który wynosi /login/ z dodanym ?logged_out=true, i zwraca żądany adres URL. |
clwc_login_head | Akcja | Uruchamia się wewnątrz tagu <head> strony, po stylach wtyczki. Użyj go do dodania arkusza stylów lub tagu meta. |
clwc_login_enqueue_scripts | Akcja | Uruchamia się blisko końca strony. Użyj go do dołączenia skryptów dla strony logowania. |
Formularz logowania uruchamia również standardowe haki logowania WooCommerce: woocommerce_login_form_start, woocommerce_login_form i woocommerce_login_form_end. Dlatego większość wtyczek CAPTCHA i zabezpieczeń, które działają na formularzu logowania WooCommerce, działa również tutaj.
REST API: punkt końcowy ustawień
Wtyczka posiada jeden punkt końcowy REST API dla swoich ustawień. Pozwala on na odczytanie bieżących ustawień lub ich aktualizację z kodu, na przykład podczas konfigurowania wielu sklepów z jednego skryptu.
/wp-json/clwc/v1/settings
| Metoda | Co robi |
|---|---|
POBIERZ | Zwraca wszystkie ustawienia, a także listę rotation_items |
POST | Aktualizuje przesłane ustawienia i zwraca wszystkie ustawienia |
Kto może z niego korzystać
Obie metody wymagają zalogowanego konta z uprawnieniem manage_woocommerce. Obejmuje to administratorów i menedżerów sklepów. Każdy inny otrzyma odpowiedź 401 lub 403.
Dla żądania z przeglądarki podczas logowania, wyślij nagłówek X-WP-Nonce z nonce wp_rest. Dla żądania spoza WordPress, użyj hasła aplikacji z uwierzytelnianiem podstawowym.
Odczytaj ustawienia
curl -u "admin:APPLICATION_PASSWORD" https://yourstore.com/wp-json/clwc/v1/settings
Odpowiedź jest obiektem JSON. Każde ustawienie, którego jeszcze nie zapisałeś, wraca z wartością domyślną, z wyjątkiem logo_url, które jest pomijane w odpowiedzi, dopóki nie zapiszesz adresu URL logo.
Zaktualizuj ustawienia
Wyślij treść JSON tylko z polami, które chcesz zmienić. Pominięte pola pozostają bez zmian.
curl -X POST -u "admin:APPLICATION_PASSWORD" \
-H "Content-Type: application/json" \
-d '{"template":"template-2","button_bg":"#e11d48","login_heading":"Welcome back"}' \
https://yourstore.com/wp-json/clwc/v1/settings
Z poziomu przeglądarki możesz używać wp.apiFetch w ten sam sposób:
wp.apiFetch( {
path: '/clwc/v1/settings',
method: 'POST',
data: { login_button_text: 'Sign in' },
} );
Wtyczka czyści każdą wartość przed jej zapisaniem. Wartość niewłaściwego typu jest pomijana lub zapisywana jako pusta, a żądanie nadal jest realizowane.
| Pola | Akceptowane wartości i ich obsługa |
|---|---|
Pola kolorów: left_panel_bg, left_panel_text, right_panel_bg, right_panel_text, button_bg, button_text, button_hover_bg, link_color, link_hover_color, input_border, input_focus, promo_button_bg, promo_button_text_color, promo_button_hover_bg, promo_button_border | Kolor w formacie hex, np. #3b82f6. Wszystko inne jest zapisywane jako puste. |
Pola URL: logo_url, promo_button_url | Prawidłowy adres URL. Wtyczka czyści go jako adres URL przed zapisaniem. |
szablon | Jedna z opcji: template-1, template-2, template-3, template-4, template-5. Inne wartości są ignorowane. |
promo_enabled, enable_rotation | yes lub no. Inne wartości są ignorowane. |
mobile_promo_display | hide lub stack. Inne wartości są ignorowane. |
Pola tekstowe: login_heading, email_label, password_label, remember_label, login_button_text, lost_password_text, promo_heading, promo_button_text | Zwykły tekst. Tagi HTML są usuwane. |
promo_content | Tekst z podstawowymi tagami HTML, takimi jak <br>, <p> i <strong>. Niezabezpieczone tagi HTML są usuwane. |
rotation_items | Lista elementów. Każdy element może zawierać heading, content, button_text, button_url i image_url. Wysłanie tego pola zastępuje całą zapisaną listę. |
Rozwiązywanie problemów
manage_woocommerce. Sprawdź, czy Twoje hasło aplikacji należy do administratora lub kierownika sklepu. W przypadku żądań z przeglądarki sprawdź, czy wysyłasz prawidłowy nagłówek X-WP-Nonce.woocommerce_login_redirect zmienia adres URL po Twoim. Sprawdź również, czy adres URL należy do Twojej własnej witryny. Wtyczka wysyła klientów do sekcji Moje konto, gdy ostateczny adres URL wskazuje domenę, której WordPress nie zezwala.add_filter() potrzebuje na końcu 10, 2, aby WordPress przekazał oba parametry do Twojej funkcji.#3b82f6 lub #fff. Nazwy kolorów, takie jak red, i wartości, takie jak rgb(0,0,0), są zapisywane jako puste.clwc_login_head dla tagu <head> i clwc_login_footer lub clwc_login_enqueue_scripts dla końca strony.Często zadawane pytania
woocommerce_login_redirect.manage_woocommerce, a menedżerowie sklepów mają je domyślnie.functions.php swojego motywu potomnego. Nie dodawaj go do plików samej wtyczki, ponieważ aktualizacje wtyczki je nadpisują.Potrzebujesz pomocy?
Custom Login for WooCommerce to wtyczka premium, więc jeśli potrzebujesz pomocy z konkretną personalizacją, otwórz zgłoszenie wsparcia, a nasz zespół wskaże Ci odpowiedni hook dla Twojego przypadku użycia.

