Warning: Undefined array key "pl" in /home/host1693024/word-press.day/htdocs/www/875348534534.php on line 1655
Utwórz własne pola kontaktowe użytkownika WordPress

Utwórz własne pola kontaktowe użytkownika WordPress


Dziś stworzyłem dla Was nową wtyczkę. Wtyczka zajmująca się sposobami kontaktu z użytkownikami. Zasadniczo, gdy edytujesz użytkownika w administracji, pojawia się blok „dane kontaktowe”. Otóż chciałbym Wam pokazać jak dodać tam własne pola, a idąc nieco dalej, jak wyświetlić (lub nie) te nowe pola na stronie rejestracji.

Oto podgląd tego, co będziemy tworzyć:

Nowe pola użytkownika na stronie edycji

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 „niestandardowymi metodami kontaktu użytkownika”. W nowo utworzonym folderze utwórz plik o nazwie „rc-custom-user-contact-methods.php” i otwórz go w swoim ulubionym edytorze.

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

<?php
/*
Plugin Name: Custom User Contact Methods
Plugin URL: http://remicorson.com/
Description: Add custom fields to users "contact" section
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
*/

Krok 2: Zdefiniuj swoje pola niestandardowe

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

$extra_fields =  array( 
	array( 'facebook', __( 'Facebook Username', 'rc_cucm' ), true ),
	array( 'twitter', __( 'Twitter Username', 'rc_cucm' ), true ),
	array( 'googleplus', __( 'Google+ ID', 'rc_cucm' ), true ),
	array( 'linkedin', __( 'Linked In ID', 'rc_cucm' ), false ),
	array( 'pinterest', __( 'Pinterest Username', 'rc_cucm' ), false ),
	array( 'wordpress', __( 'WordPress.org Username', 'rc_cucm' ), false ),
	array( 'phone', __( 'Phone Number', 'rc_cucm' ), true )
);

Przechowujemy każde pole w tablicy, która ma 3 parametry, pierwszy to identyfikator pola, drugi to etykieta pola, a ostatni to informacja logiczna określająca, 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: Zamocuj odpowiedni filtr

Musimy teraz podłączyć funkcję do odpowiedniego filtra. W naszym konkretnym przypadku filtr to „user_contactmethods”, a nazwa funkcji, którą będziemy tworzyć to „rc_add_user_contactmethods”.

// Use the user_contactmethods to add new fields
add_filter( 'user_contactmethods', 'rc_add_user_contactmethods' );

Krok 4: Utwórz nasze pola niestandardowe

Musimy teraz utworzyć funkcję „rc_add_user_contactmethods”. To ten, który doda nasze niestandardowe pola do strony edycji użytkownika. Dobra wiadomość jest taka, że przechowujemy nasze pola w tablicy, co oznacza, że poniższa funkcja będzie w pełni dynamiczna i dość łatwo będzie dodać nowe pola, po prostu modyfikując zmienną $extra_fields.

/**
 * Add custom users custom contact methods
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_add_user_contactmethods( $user_contactmethods ) {

	// Get fields
	global $extra_fields;
	
	// Display each fields
	foreach( $extra_fields as $field ) {
		if ( !isset( $contactmethods[ $field[0] ] ) )
    		$user_contactmethods[ $field[0] ] = $field[1];
	}

    // Returns the contact methods
    return $user_contactmethods;
}

Na tym etapie, jeśli zapiszesz i aktywujesz wtyczkę, powinieneś zobaczyć swoje niestandardowe pola na stronie edycji użytkownika. Ponieważ używamy prawidłowego haka, nie musimy tworzyć pola „zapisz” dane. Tak więc wtyczka na razie działa świetnie. Chciałbym jednak pójść nieco dalej i dodać opcję wyświetlania tych pól na stronie rejestracji. Upewnij się, że w ustawieniach zaznaczyłeś pole wyboru „Każdy może się zarejestrować”, w przeciwnym razie link „Zarejestruj się” nie będzie widoczny.

Krok 5: Haki na stronie rejestracyjnej

Aby dodać nasze pola na stronie rejestracji, musimy uzyskać dostęp do co najmniej dwóch hooków i utworzyć dwie funkcje. Jeden do wyświetlania pól, drugi do zapisywania danych pól do bazy danych.

Podepnijmy nasze funkcje:

// Add our fields to the registration process
add_action( 'register_form', 'rc_register_form_display_extra_fields' );
add_action( '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 logiczny określa, czy pola mają być wyświetlane, czy nie. Prawda: pole jest wyświetlane, fałsz: pole nie jest wyświetlane.

/**
 * Show custom fields on registration page
 *
 * Show custom fields on registration if field third parameter is set to true
 *
 * @access      public
 * @since       1.0 
 * @return      void
 */
function rc_register_form_display_extra_fields() {
	
	// Get fields
	global $extra_fields;

	// Display each field if 3th parameter set to "true"
	foreach( $extra_fields as $field ) {
		if ( $field[2] == true ) { 
		$field_value = isset( $_POST[ $field[0] ] ) ? $_POST[ $field[0] ] : '';
		echo '<p>
			<label for="'. esc_attr( $field[0] ) .'">'. esc_html( $field[1] ) .'<br />
			<input type="text" name="'. esc_attr( $field[0] ) .'" id="'. esc_attr( $field[0] ) .'" class="input" value="'. esc_attr( $field_value ) .'" size="20" /></label>
			</label>
		</p>';
		} // endif
	} // end foreach
}

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

Teraz, gdy nasze pola są pokazane na stronie rejestracji, musimy zapisać ich wartości w bazie danych. Taki jest cel funkcji „rc_user_register_save_extra_fields”. W tym celu musimy skorzystać z funkcji „wp_update_user()”.

/**
 * Save field values
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_user_register_save_extra_fields( $user_id, $password = '', $meta = array() )  {

	// Get fields
    global $extra_fields;
    
    $userdata       = array();
    $userdata['ID'] = $user_id;
    
    // Save each field
    foreach( $extra_fields as $field ) {
    	if( $field[2] == true ) { 
	    	$userdata[ $field[0] ] = $_POST[ $field[0] ];
	    } // endif
	} // end foreach

    $new_user_id = wp_update_user( $userdata );
}

Wniosek

No cóż, poznaliś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 prostą funkcję unset(). Ale możesz także dodać pewne funkcje, aby oczyścić niestandardowe pola, aby na przykład sprawdzić, czy numer telefonu ma odpowiedni format, czy pole jest wymagane, czy nie itp. itp. Nie wahaj się zapytać o konkretne funkcje w komentarzach!

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

// Param 1 is user ID
// Param 2 is field ID
// Param 3 is there to get a var or an array
echo get_user_meta( 1, 'twitter', true );