» » » Додаємо свої поля в профіль користувачів на Wordpress

Додаємо свої поля в профіль користувачів на Wordpress

При роботі над проектами, частенько виникає необхідність отримати від зареєстрованих користувачів більше інформації. Ця ситуація схожа з тими, коли, наприклад, виникає необхідність створювати нові мета-дані де є можливість їх використовувати.

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

Сьогодні ми хочемо розповісти вам про те, яким чином можна додавати нові власні поля в профілі користувачів на Wordpress.

Додаємо нові поля в профіль користувача
Додаємо свої поля в профіль користувачів на 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 );


wordpress
2094 24.05.14



Напівжирний Нахилений текст Підкреслений текст Перекреслений текст | Вирівнювання по лівому краю По центру Вирівнювання по правому краю | Вставка смайликів Вибір кольору | Прихований текст Вставка цитати Перетворити вибраний текст з транслітерації в кирилицю Вставка спойлеру