Расширение профиля пользователей

Однако расширение может потребоваться и по другим причинам. Предположим у вас на блоге пишут посты многие авторы. А вы хотите знать о них всё! Ну или хотя бы номер телефона и Webmoney-реквизиты, чтобы как-то оплачивать им работу.

Никаких плагинов мы использовать не будем. Короче вот вам пример кода, который нужно засунуть в functions.php, сейчас расскажу, что к чему.

<?php
function show_profile_fields( $user ) { ?> 
    <h3>Дополнительная информация</h3>
    <!-- добавляется ещё один блок в профиле, в примере он будет называться "Дополнительная информация" -->
    <table class="form-table">
    <!-- для того чтобы ваши поля выглядели так же, как и стандартные в WordPress, прописывайте такие же классы как и тут -->
    <!-- добавляем поле город -->
    <tr><th><label for="city">Город</label></th>
    <td><input type="text" name="city" id="city" value="<?php echo esc_attr(get_the_author_meta('city',$user->ID));?>" class="regular-text" /><br /></td></tr>
    <!-- добавляем поле пол -->
    <th><label for="gender">Пол</label></th>
    <td><?php $gender = get_the_author_meta('gender',$user->ID ); ?>
        <ul>
            <li><label><input value="мужской" name="gender"<?php if ($gender == 'мужской') { ?> checked="checked"<?php } ?> type="radio" /> мужской</label></li>
            <li><label><input value="женский"  name="gender"<?php if ($gender == 'женский') { ?> checked="checked"<?php } ?> type="radio" /> женский</label></li>
        </ul>         
    </td></tr>
    <!-- закрываем теги и применяем функцию -->
    </table>
 <?php }
add_action( 'show_user_profile', 'show_profile_fields' );
add_action( 'edit_user_profile', 'show_profile_fields' );

Чтобы поля работали, недостаточно только одной этой функции, поля конечно появятся, но не будут сохраняться, поэтому дополняем код вот этим:

function save_profile_fields( $user_id ) {
    update_usermeta( $user_id, 'city', $_POST['city'] );
    update_usermeta( $user_id, 'gender', $_POST['gender'] );
}
 
add_action( 'personal_options_update', 'save_profile_fields' );
add_action( 'edit_user_profile_update', 'save_profile_fields' );

Вот как это будет выглядеть в админке на странице редактирования пользователя:

пример дополнительных полей в профиле

Существуют ещё некоторые способы добавления и удаления полей в профиле.

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: