Сохранение пользовательских метаданных при регистрации

15 мая 2017 г., 12:44:46
Просмотры: 13.8K
Голосов: 4

Я пытаюсь создать свою собственную форму регистрации с обязательным полем для телефона и хочу сохранить этот номер телефона как пользовательские метаданные.

После валидации и очистки ввода мой код выглядит так:

// это возвращает корректное значение - string(9) "126777889"
var_dump($metas['user_phone'])

$user_id = wp_insert_user($fields);
add_user_meta( $user_id, 'user_phone', $metas['user_phone'] );

Пользователь создается правильно, но есть проблема с метаполем телефона - в админке оно выглядит так: Скриншот проблемы с метаполем телефона

Я также попробовал этот подход для проверки существования метаданных:

if(get_user_meta($user_id,'user_phone')) {
    update_user_meta($user_id,'user_phone');
} else {
    add_user_meta($user_id,'user_phone');    
}

Также пробовал добавить метаданные через действие 'user_register' вот так:

function addMyCustomMeta($user_id,$meta) {
    update_user_meta($user_id,$meta);
}
add_action('user_register','addMyCustomMeta',10,2,);

И затем использовал это так:

$user_id = wp_insert_user($fields);
do_action('addMyCustomMeta',$user_id,$metas['user_phone']);

Во всех случаях я получаю ситуацию, описанную на картинке выше. Нет названия метаполя, а значение сохраняется как несколько "Array"

В базе данных все выглядит нормально:

Скриншот метаданных в базе данных

Есть идеи, что я делаю не так?

Спасибо

2
Комментарии

Как вывести значения в вашем HTML-коде? Поделиться вашим HTML-кодом было бы полезно.

Laxmana Laxmana
15 мая 2017 г. 12:55:33

Вот полный код: https://gist.github.com/cafesk8/78e7ac3555aa94afcb35d815853c4365

Только HTML: https://gist.github.com/cafesk8/5503fb9c49295c13f8d4c26d3ffcc2e6

Cafourek Cafourek
15 мая 2017 г. 13:12:40
Все ответы на вопрос 1
1

Необходимо вызвать следующие хуки:

  • user_register
  • personal_options_update
  • edit_user_profile_update

    add_action('user_register', 'addMyCustomMeta');    
    add_action('personal_options_update', 'addMyCustomMeta' );    
    add_action('edit_user_profile_update','addMyCustomMeta' );    
    function addMyCustomMeta( $user_id ) {    
               update_user_meta( $user_id, 'user_phone', $_POST['user_phone'] ); 
    }
    

Надеюсь, это поможет!!

15 мая 2017 г. 13:22:19
Комментарии

В какую часть моего кода мне следует добавить действия? Я хочу, чтобы они запускались только в случае, если все значения и метаданные валидны и т.д. Смотрите: http://gist.github.com/cafesk8/78e7ac3555aa94afcb35d815853c4365

Cafourek Cafourek
15 мая 2017 г. 14:54:45