Однако расширение может потребоваться и по другим причинам. Предположим у вас на блоге пишут посты многие авторы. А вы хотите знать о них всё! Ну или хотя бы номер телефона и 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