Я новичок в WordPress, и я ищу способ добавить настраиваемые поля и отображать их (без плагина).
я обнаружил отличный пример в сети. Автор добавляет ряд настраиваемых полей, добавив следующую функцию к fuctions.php
файл.
function modify_contact_methods($profile_fields) {
// Add new fields
$profile_fields['linkedin'] = 'LinkedIn URL';
$profile_fields['telephone'] = 'Telephone';
return $profile_fields;
}
add_filter('user_contactmethods', 'modify_contact_methods');
Я смог успешно добавить такие поля в Контакты раздел моей формы регистрации пользователя. Я пытался добавить пользовательские поля в другие разделы, такие как Информация об авторе раздел (где Био), но безуспешно.
Я думаю, что я должен изменить значение user_contactmethods
в add_filter(...)
функция, но я не смог ничего найти.
Я даже не знаю, правильно ли это сделать, но до сих пор это работало.
Поскольку вы новичок в WordPress, у вас нет знаний о filter
а также action
, Если вы пройдете через список фильтров , Ты найдешь user_contactmethods
Вот.
Как вы можете видеть в Авторские и пользовательские фильтры, Есть только 4 фильтра для Автора и Пользователя. И мы не можем использовать ни один из них для достижения желаемого результата.
Но как-то мы можем сделать это, добавив еще одно поле под О пользователе что-то вроде Информация об авторе.
add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );
function extra_user_profile_fields( $user ) { ?>
<h3><?php _e("Author Information", "blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="author"><?php _e("Author Information"); ?></label></th>
<td>
<textarea name="author" id="author" rows="5" cols="10" ><?php echo esc_attr( get_the_author_meta( 'author', $user->ID ) ); ?></textarea><br />
<span class="description"><?php _e("Please enter Author's Information."); ?></span>
</td>
</tr>
</table>
<?php }
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
function save_extra_user_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
update_user_meta( $user_id, 'author', $_POST['author'] );
}
Таким образом, вы можете добавить столько полей, сколько хотите.
Других решений пока нет …