Однако расширение может потребоваться и по другим причинам. Предположим у вас на блоге пишут посты многие авторы. А вы хотите знать о них всё! Ну или хотя бы номер телефона и 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' );
Вот как это будет выглядеть в админке на странице редактирования пользователя:
Существуют ещё некоторые способы добавления и удаления полей в профиле.
Здравствуйте! А не подскажите, как переписать строчки выбора пола, если будет не radio, а checkbox? И добавление потом этих полей в usermeta?
Вот попробовал, что-то типа того будет?
Добрый день!
да, примерно так, на всякий случай скину свой пример
Спасибо!
честно говоря, я не совсем понимаю смысл использования чекбоксов в этих целях - это нужно для того, чтобы можно было отметить и мужской и женский пол одновременно?)
Нет, конечно, там другие будут поля. Просто чтобы проще вопрос был и меньше менять в коде ))
А разве тут не надо вот так $gender[1]?
зависит от того, в каком виде данные заносятся в базу)
Хм... не слишком шарю в этом. То есть если применять запись в базу, как в вашем коде из поста, то [1] в if не нужно, верно?
Мне просто казалось, что мы в if проверяем конкретное значение из массива, там же не одно значение, а два в данном случае [0] и [1].
Прошу прощения, если глупые вопросы задаю.
А как сделать проверку на ошибки и как её вывести пользователю?
В файле
wp-config.php
установить значение параметраWP_DEBUG
равнымtrue
.Имел ввиду сделать проверку на ошибки кастомных полей.
Маленько разобрался и сделал так:
Выводим кастомное поле с загрузкой файла:
Сохраняем и загружаем файл на сервер:
Проверяем тип файла:
Такой способ вроде и работает, но не уверен в его правильности))
Добрый день Михаил, не подскажете, как сделать на основе данного примера два выпадающих списка?
Один пункт должен быть выбором страны, а второй -выбором города
Пример:
Страна (выбрать из выпадающего списка нужную)
Город(выбрать из выпадающего списка нужный)
И еще вопрос, создаю страницу регистрации при помощи плагина, можно ли будет эти поля вывести при регистрации пользователя на страницу? или эти поля будут доступны только в админке?
заранее спасибо)
Добрый день!
1) Про механику использования select я уже писал тут,
2) да, можно, всё равно они в метаданных храниться будут.
Михаил, подскажите как выводить данные поля в личном кабинете пользователя, который присутствует в интерфейсе сайта.
Поясню
Добавил ваш код в functions.php в пользователе в wordpress, поля отображаются и сохраняются. Добавляю также данные поля в личный кабинет интерфейса сайта, они не сохраняются
<input v-model="data.meta.first_name"
class="form-control"
placeholder=""/>
<input v-model="data.meta.last_name"
class="form-control"
placeholder=""/>
<input v-model="data.meta.country"
class="form-control"
placeholder=""/>
Поле Country является дополнительным, остальные два стандартными
Добрый день, а интерфейс сайта – это что у вас там?