Додаємо свої поля в профіль користувачів на Wordpress
При роботі над проектами, частенько виникає необхідність отримати від зареєстрованих користувачів більше інформації. Ця ситуація схожа з тими, коли, наприклад, виникає необхідність створювати нові мета-дані де є можливість їх використовувати.
У БД Wordpress є таблиця під назвою wp_usermeta, в якій містяться всі додаткові дані, які можна бачити в профайлах користувачів. Ця таблиця складається з унікального ID, ID користувача, мета назви і мета-значень. Структура цієї бази даних передбачає можливість додавання нових полів в аккаунт користувача, якщо це буде необхідно.
Сьогодні ми хочемо розповісти вам про те, яким чином можна додавати нові власні поля в профілі користувачів на Wordpress.
Додаємо нові поля в профіль користувача

На сторінці профілю користувача в самому низу є кнопки дії під назвою edit_user_profile і show_user_profile.
З їх допомогою ми можемо додавати нові поля на сторінку профілю. Нижче наведений код дозволить нам додати нові поля, які можна використовувати для додавання різних посилань на соціальні мережі.
Вище наведений код додає нову таблицю в самий низ сторінки профілю і 3 нових текстових блоки у форму. Щоб впевнитися, що вони заповнені збереженими даними, ми використовуємо Wordpress-функцію get_the_author_meta(), яка повертає мета-дані, збережені для профілю користувача.
Ця функція вимагає від нас наявності 2 параметрів: перший - це назва поля, яке ви хочете відображувати, а другий параметр - це ID користувача, якого потрібно шукати.
Зберігаємо поля в профілі користувача
Коли профіль користувача збережений, нам потрібно додати нову дію, яка зберігатиме нову інформацію, і дії збереження, які нам потрібно використовувати, будуть наступними: personal_options_update і edit_user_profile_update.
Ми можемо використовувати глобальну змінну $_POST, аби отримати поля введення із сторінки профілю користувача і відновити мета-інформацію про користувача, використовуючи дані з цих полів. Аби відновити мета-дані користувача, нам потрібно скористатися Wordpress-функцією update_user_meta().
Ця функція приймає 4 параметри:
* $user_id
* $meta_key
* $meta_value
* $prev_value
Відображення полів користувача
Якщо ви хочете відображувати інформацію у вашому шаблоні, то для цього можна скористатися 2 функціями: або функція the_author_meta( $field, $userID ) або функція get_the_author_meta( $field, $userID ), різниця між якими полягає в тому, що get_the_author_meta() поверне дані, а the_author_meta() відображатиме дані на екрані.
У БД Wordpress є таблиця під назвою wp_usermeta, в якій містяться всі додаткові дані, які можна бачити в профайлах користувачів. Ця таблиця складається з унікального ID, ID користувача, мета назви і мета-значень. Структура цієї бази даних передбачає можливість додавання нових полів в аккаунт користувача, якщо це буде необхідно.
Сьогодні ми хочемо розповісти вам про те, яким чином можна додавати нові власні поля в профілі користувачів на Wordpress.
Додаємо нові поля в профіль користувача

На сторінці профілю користувача в самому низу є кнопки дії під назвою edit_user_profile і show_user_profile.
do_action( 'show_user_profile', $profileuser );
do_action( 'edit_user_profile', $profileuser );
З їх допомогою ми можемо додавати нові поля на сторінку профілю. Нижче наведений код дозволить нам додати нові поля, які можна використовувати для додавання різних посилань на соціальні мережі.
add_action( 'show_user_profile', 'add_extra_social_links' );
add_action( 'edit_user_profile', 'add_extra_social_links' );
function add_extra_social_links( $user )
{
?>
<h3>New User Profile Links</h3>
<table class="form-table">
<tr>
<th><label for="facebook_profile">Facebook Profile</label></th>
<td><input type="text" name="facebook_profile" value="<?php echo esc_attr(get_the_author_meta( 'facebook_profile', $user->ID )); ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="twitter_profile">Twitter Profile</label></th>
<td><input type="text" name="twitter_profile" value="<?php echo esc_attr(get_the_author_meta( 'twitter_profile', $user->ID )); ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="google_profile">Google+ Profile</label></th>
<td><input type="text" name="google_profile" value="<?php echo esc_attr(get_the_author_meta( 'google_profile', $user->ID )); ?>" class="regular-text" /></td>
</tr>
</table>
<?php
}
Вище наведений код додає нову таблицю в самий низ сторінки профілю і 3 нових текстових блоки у форму. Щоб впевнитися, що вони заповнені збереженими даними, ми використовуємо Wordpress-функцію get_the_author_meta(), яка повертає мета-дані, збережені для профілю користувача.
Ця функція вимагає від нас наявності 2 параметрів: перший - це назва поля, яке ви хочете відображувати, а другий параметр - це ID користувача, якого потрібно шукати.
<?php
get_the_author_meta( $field, $userID );
?>
Зберігаємо поля в профілі користувача
Коли профіль користувача збережений, нам потрібно додати нову дію, яка зберігатиме нову інформацію, і дії збереження, які нам потрібно використовувати, будуть наступними: personal_options_update і edit_user_profile_update.
Ми можемо використовувати глобальну змінну $_POST, аби отримати поля введення із сторінки профілю користувача і відновити мета-інформацію про користувача, використовуючи дані з цих полів. Аби відновити мета-дані користувача, нам потрібно скористатися Wordpress-функцією update_user_meta().
<?php
update_user_meta( $user_id, $meta_key, $meta_value, $prev_value );
?>
Ця функція приймає 4 параметри:
* $user_id
* $meta_key
* $meta_value
* $prev_value
add_action( 'personal_options_update', 'save_extra_social_links' );
add_action( 'edit_user_profile_update', 'save_extra_social_links' );
function save_extra_social_links( $user_id )
{
update_user_meta( $user_id,'facebook_profile', sanitize_text_field( $_POST['facebook_profile'] ) );
update_user_meta( $user_id,'twitter_profile', sanitize_text_field( $_POST['twitter_profile'] ) );
update_user_meta( $user_id,'google_profile', sanitize_text_field( $_POST['google_profile'] ) );
}
Відображення полів користувача
Якщо ви хочете відображувати інформацію у вашому шаблоні, то для цього можна скористатися 2 функціями: або функція the_author_meta( $field, $userID ) або функція get_the_author_meta( $field, $userID ), різниця між якими полягає в тому, що get_the_author_meta() поверне дані, а the_author_meta() відображатиме дані на екрані.
// return the data
$twitter = get_the_author_meta( 'twitter_profile', $userID );
// echo the data
the_author_meta( 'twitter_profile', $userID );
24.05.14
11203