Dzisiaj stworzyłem dla Ciebie nową wtyczkę. Wtyczka zajmująca się metodami kontaktowymi użytkowników. Zasadniczo podczas edycji użytkownika w administracji istnieje blok „informacji kontaktowych”. Cóż, chciałbym pokazać, jak dodać tam własne pola, i pójść nieco dalej, jak pokazać (lub nie) te nowe pola na stronie rejestracji.


Oto podgląd tego, co stworzymy:

edit-custom-fields

Nowe pola użytkownika na stronie edycji

Pola niestandardowe

Niestandardowe pola na stronie rejestracji

Aby to zrobić, jak zwykle, stworzymy ładną i prostą wtyczkę!

Krok 1: Utwórz wtyczkę

Utwórz nowy folder w wp-content / plugins i nazwij go „custom-user-contact-metody”. Wewnątrz tego nowo utworzonego folderu utwórz plik o nazwie „rc-custom-user-contact-methods.php” i otwórz go w swoim ulubionym oprogramowaniu do edycji.

Umieść tę treść w pustym pliku. Ten kod po prostu rejestruje wtyczkę:

Krok 2: Zdefiniuj swoje pola niestandardowe

Następnie musimy utworzyć zmienną, która będzie zawierać nasze pola niestandardowe, które będą używane na stronie edycji użytkownika, a także na stronie domyślnej rejestracji. Zapiszmy te pola w zmiennej o nazwie $ extra_fields.

$ extra_fields = array (
tablica („facebook”, __ („nazwa użytkownika Facebook”, „rc_cucm”), prawda),
tablica („twitter”, __ („nazwa użytkownika Twittera”, „rc_cucm”), prawda),
tablica („googleplus”, __ („identyfikator Google+”, „rc_cucm”), prawda),
tablica („linkedin”, __ („Linked In ID”, „rc_cucm”), false),
tablica („pinterest”, __ („Nazwa użytkownika Pinterest”, „rc_cucm”), false),
tablica („wordpress”, __ („Nazwa użytkownika WordPress.org”, „rc_cucm”), false),
tablica („telefon”, __ („numer telefonu”, „rc_cucm”), prawda)
);

Przechowujemy każde pole w tablicy, która ma 3 parametry, pierwszy to identyfikator pola, drugi to etykieta pola, a ostatni to informacja logiczna, która określa, czy pole jest wyświetlane na stronie rejestracji, czy nie . Możesz dodać dowolną liczbę parametrów, na przykład symbol zastępczy lub wymagane informacje.

Krok 3: Podłącz odpowiedni filtr

Teraz musimy podpiąć funkcję do odpowiedniego filtra. W naszym konkretnym przypadku filtr to „user_contactmethods”, a nazwa funkcji, którą zamierzamy utworzyć, to „rc_add_user_contactmethods”.

// Użyj metod user_contact, aby dodać nowe pola
add_filter („user_contactmethods”, „rc_add_user_contactmethods”);

Krok 4: Utwórz nasze pola niestandardowe

Teraz musimy utworzyć funkcję „rc_add_user_contactmethods”. To ten doda nasze niestandardowe pola do strony edycji użytkownika. Dobrą wiadomością jest to, że przechowujemy nasze pola w tablicy, co oznacza, że ​​następująca funkcja będzie w pełni dynamiczna, a dodawanie nowych pól będzie łatwe dzięki modyfikacji zmiennej $ extra_fields.

/ **
* Dodaj niestandardowe metody kontaktu niestandardowych użytkowników
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_add_user_contactmethods ($ user_contactmethods) {

// Uzyskaj pola
globalne $ extra_fields;

// Wyświetl wszystkie pola
foreach ($ extra_fields as $ field) {
if (! isset ($ contactmethods [$ field [0]]))
$ user_contactmethods [$ field [0]] = $ field [1];
}

// Zwraca metody kontaktu
zwraca $ user_contactmethods;
}

Na tym etapie, jeśli zapiszesz i aktywujesz wtyczkę, powinieneś zobaczyć swoje pola niestandardowe na stronie edycji użytkownika. Ponieważ używamy właściwego haka, nie musimy tworzyć danych pól „zapisz”. Wtyczka działa w tej chwili świetnie. Chciałbym jednak pójść nieco dalej i dodać opcję wyświetlania tych pól na stronie rejestracji. Sprawdź w ustawieniach pole „Każdy może się zarejestrować”, w przeciwnym razie nie zobaczysz linku „Zarejestruj się”.

Krok 5: Haki strony rejestracji

Aby dodać nasze pola na stronie rejestracji, musimy uzyskać dostęp do co najmniej dwóch haczyków i utworzyć dwie funkcje. Jeden wyświetla pola, a drugi zapisuje dane pól w bazie danych.

Zahaczmy nasze funkcje:

// Dodaj nasze pola do procesu rejestracji
działanie dodatkowe („register_form”, „rc_register_form_display_extra_fields”);
działanie dodatkowe („user_register”, „rc_user_register_save_extra_fields”, 100);

Krok 6: Wyświetl stronę rejestracji pól niestandardowych

W powyższym kodzie zadeklarowaliśmy dwie funkcje. Pierwszym z nich jest wyświetlenie pól na stronie rejestracji. W tej części musimy zająć się trzecim parametrem każdej tablicy w $ extra_fields. Ten parametr boolowski mówi, czy pola muszą być pokazane, czy nie. Prawda: pole jest pokazane, fałsz: pole nie jest pokazane.

/ **
* Pokaż niestandardowe pola na stronie rejestracji
*
* Pokaż pola niestandardowe przy rejestracji, jeśli trzeci parametr pola ma wartość true
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_register_form_display_extra_fields () {

// Uzyskaj pola
globalne $ extra_fields;

// Wyświetlaj każde pole, jeśli trzeci parametr jest ustawiony na „prawda”
foreach ($ extra_fields as $ field) {
if ($ field [2] == true) {
$ field_value = isset ($ _POST [$ field [0]])? $ _POST [$ field [0]]: '';
Echo '

„; } // endif } // koniec foreach }

Krok 7: Zapisz wartości pól podczas procesu rejestracji

Teraz, gdy nasze pola są wyświetlane na stronie rejestracji, musimy przechowywać ich wartości w bazie danych. To jest czas działania funkcji „rc_user_register_save_extra_fields”. Aby to zrobić, musimy użyć „wp_update_user ()”.

/ **
* Zapisz wartości pól
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_user_register_save_extra_fields ($ ID_użytkownika, $ hasło = '', $ meta = array ()) {

// Uzyskaj pola
globalne $ extra_fields;

$ userdata = array ();
$ userdata ['ID'] = $ user_id;

// Zapisz każde pole
foreach ($ extra_fields as $ field) {
if ($ field [2] == true) {
$ userdata [$ field [0]] = $ _POST [$ field [0]];
} // endif
} // koniec foreach

$ new_user_id = wp_update_user ($ userdata);
}

Wniosek

Widzieliśmy podstawy dodawania nowych pól do metod kontaktu z użytkownikiem, ale to wszystko. Możesz na przykład usunąć istniejące pola, takie jak „Yahoo IM”, „AIM” i „Jabber”, wykonując proste polecenie unset (). Ale możesz także dodać pewne funkcje do czyszczenia niestandardowych pól, aby na przykład sprawdzić, czy numer telefonu ma odpowiedni format, czy pole jest wymagane, czy nie itd. Itd.… Nie wahaj się poprosić o określone funkcje w komentarzach!

No i ostatnia rzecz… jeśli chcesz wyświetlić dane z dowolnego pola, po prostu użyj tego:

// Param 1 to identyfikator użytkownika
// Param 2 to identyfikator pola
// Param 3 jest po to, aby uzyskać var ​​lub tablicę
echo get_user_meta (1, „twitter”, true);  
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me