Wordpress как вычислить значение для пользователя и обновить соответствующее настраиваемое метаполе

Я создал интерфейсную форму на Wordpress, используя Elementor Pro, и он успешно обновляет метаданные пользователя вошедшего в систему при отправке.

Теперь я хотел бы вычислить отдельное настраиваемое мета-поле, используя значения, которые были отправлены в форме.

Другими словами: когда пользователь отправляет значение для настраиваемого поля, я хотел бы автоматически вычислить, используя только что введенное значение, и сохранить его для пользователя.

На данный момент вычисление для можно просто умножить на 100.

(Пользовательское поле для уже создано).

Первоначально необходимо добавить значение для straight_speed_percent, но если форма будет отправлена ​​повторно и straight_speed изменяется, я хочу обновить значение.

Я пробовал следующий код, но, похоже, он не работает. Любая помощь будет принята с благодарностью!

      $current_user = wp_get_current_user();
$current_user->ID;

$straight_speed = get_user_meta ('straight_speed', $current_user);

$straight_acceleration_percent_value  = $straight_speed * '100';

update_user_meta( $current_user, 'straight_acceleration_percent', '$straight_acceleration_percent_value' );

1 ответ

В вашем коде есть синтаксические и логические ошибки!

  • Когда вы используете get_user_meta вам нужно будет использовать $current_user->ID и meta key. Подробнее читайте в документации !
  • Когда вы сохраняете $straight_speed переменную в базу данных, она будет сохранена как текстовая строка, поэтому, когда вы получите ее обратно из базы данных, преобразуйте ее в целое число, а затем произведите умножение!
  • Также у вас есть дополнительные цитаты вокруг вашего $straight_acceleration_percent_value переменная, когда вы пытаетесь обновить неверное значение!

Используйте следующий фрагмент:

      $current_user = wp_get_current_user();

$straight_speed = get_user_meta($current_user->ID, 'straight_speed', true);

if ($straight_speed) {

  $straight_acceleration_percent_value  = (int)$straight_speed * 100;

  update_user_meta($current_user->ID, 'straight_speed_percent', $straight_acceleration_percent_value);

} 

Этот ответ был проверен и отлично работает! Дайте мне знать, если это сработает и для вас!

Другие вопросы по тегам