Допустим, я хочу дать пользователем новые поля, например, опыт. Так же хочу выводить его в каком-нибудь месте. Нужно ли мне искать и вручную править стандартную БД вордпресса (думаю, это может привести к проблемам) или же есть более правильный способ?
Правильней будет обращаться через хук. Ничего не делайте в WP напрямую в базе, под каждое действие есть хук и функции, поэтому читайте доки и добавляйте через functions.php
судя по вопросу речь идет о произвольных полях в профиле пользователя, но
я хочу дать пользователем новые поля
пользователЕм или пользователЯм?
одна буква очень сильно меняет направление вопроса и вводит в заблуждение
Если речь все же о профиле пользователя, то
if(!function_exists('My_user_fields')){
function My_user_fields($user){
global $pagenow;if($pagenow=='profile.php'||$pagenow=='user-edit.php'){
...//добавляем поля (можно добавить и nonce поля хотя они есть по умолчанию)
}}}
add_action('show_user_profile','My_user_fields');
add_action('edit_user_profile','My_user_fields');
if(!function_exists('save_My_user_fields')){
function save_My_user_fields($user_id){
...//если добавили nonce поля, проверяем их
...//проверяем и сохраняем поля get_the_author_meta()
}}
add_action('personal_options_update','save_My_user_fields');
add_action('edit_user_profile_update','save_My_user_fields');
if(!function_exists('My_add_error')){
function My_add_error(){
...//можем добавить свой эрор (например get_transient (устанавливаем при проверке полей и сохранением set_transient))
}}}
add_action('load-user-edit.php','My_add_error');
add_action('load-profile.php','My_add_error');
//пишем свой акшн функцию и в нужном месте выводим do_action('my_author_info');
if(!function_exists('my_arhive_author_info')){function my_arhive_author_info(){
$author=get_user_by('id',get_query_var('author'));
...
}}
add_action('my_author_info','my_arhive_author_info',10);