Статьи

Создайте свои собственные поля контактов пользователя WordPress

Сегодня я создал для вас новый плагин. Плагин, который занимается методами связи пользователей. Обычно, когда вы редактируете пользователя в администрировании, есть блок «контактная информация». Что ж, я хотел бы показать вам, как добавить туда свои собственные поля, и пойти немного дальше, как показывать (или нет) эти новые поля на странице регистрации.

Вот предварительный просмотр того, что мы собираемся создать:

Создайте свои собственные поля контактов пользователя WordPress

Новые пользовательские поля на странице редактирования

Создайте свои собственные поля контактов пользователя WordPress

Пользовательские поля на странице регистрации

И для этого, как обычно, мы создадим красивый и простой плагин!

Шаг 1. Создайте плагин

Создайте новую папку в wp-content / plugins и назовите ее «custom-user-contact-methods». Внутри этой вновь созданной папки создайте файл с именем «rc-custom-user-contact-methods.php» и откройте его в своем любимом программном редакторе.

Поместите это содержимое в свой пустой файл. Этот код просто регистрирует плагин:

<?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
*/

Шаг 2. Определите свои настраиваемые поля

Затем нам нужно создать переменную, которая будет содержать наши настраиваемые поля, те, которые будут использоваться на странице пользовательской версии, а также на странице регистрации по умолчанию. Давайте сохраним эти поля в переменной с именем $ 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) );

Мы храним каждое поле в массиве, который имеет 3 параметра, первый – это идентификатор поля, второй – это метка поля, а последний – это логическая информация, которая определяет, отображается ли поле на странице регистрации или нет.. Вы можете добавить столько параметров, сколько хотите, например, заполнитель или необходимую информацию.

Шаг 3: установите правильный фильтр

Теперь нам нужно привязать функцию к нужному фильтру. В нашем конкретном случае фильтром является «user_contactmethods», а имя функции, которую мы собираемся создать, – «rc_add_user_contactmethods».

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

Шаг 4: Создайте наши настраиваемые поля

Теперь нам нужно создать функцию «rc_add_user_contactmethods». Это тот, который добавит наши настраиваемые поля на страницу редактирования пользователя. Хорошая новость заключается в том, что мы сохранили наши поля в массиве, это означает, что следующая функция будет полностью динамической, и будет довольно легко добавить новые поля, просто изменив переменную $ 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;
}

На этом этапе, если вы сохраните и активируете плагин, вы должны увидеть свои настраиваемые поля на странице редактирования пользователя. Поскольку мы используем правильный хук, нам не нужно создавать данные для «сохранения» полей. Итак, на данный момент плагин работает отлично. Но я хотел бы пойти немного дальше и добавить возможность отображения этих полей на странице регистрации. Убедитесь, что вы отметили в настройках флажок «Кто угодно может зарегистрироваться», иначе вы не сможете увидеть ссылку «Зарегистрироваться».

Шаг 5. Перехватчики страницы регистрации

Чтобы добавить наши поля на страницу регистрации, нам нужно получить доступ как минимум к двум хукам и создать две функции. Один для отображения полей, а второй для сохранения данных полей в базе данных.

Подключим наши функции:

// 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 );

Шаг 6. Отображение страницы регистрации настраиваемых полей

В приведенном выше коде мы объявили две функции. Первый – это отображение полей на странице регистрации. В этой части нам нужно позаботиться о третьем параметре каждого массива в $ extra_fields. Этот логический параметр сообщает, должны ли отображаться поля или нет. Истина: поле отображается, ложь: поле не отображается.

/**
* 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
}

Шаг 7: Сохраните значения полей после процесса регистрации

Теперь, когда наши поля отображаются на странице регистрации, нам нужно сохранить их значения в базе данных. Это цель функции «rc_user_register_save_extra_fields». Для этого нам нужно использовать функцию «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 );
}

Заключение

Что ж, мы видели основы того, как добавлять новые поля в методы контакта с пользователем, но это все. Например, вы можете удалить существующие поля, такие как «Yahoo IM», «AIM» и «Jabber», выполнив простую операцию unset (). Но вы также можете добавить некоторые функции для очистки настраиваемых полей, чтобы, например, проверить, имеет ли номер телефона соответствующий формат, является ли поле обязательным или нет и т.д. и т.д. Не стесняйтесь спрашивать о конкретных функциях в комментариях!

О, и последнее … если вы хотите отобразить данные любого вашего поля, просто используйте это:

// 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 );

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Кнопка «Наверх»

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: