bugfix> php > 投稿

Ninja Formsで実行されているフォームがあり、詳細を外部APIに送信するカスタムコードがあります。私が抱えている問題は2つあります。

gdpr_consent_dateのチェックボックスをオンにすると、このプロセスを介してAPIにdatetime(js timetstamp)が発生し、email_uptdate_optinがチェックされているかどうかにかかわらずブール値をオンにするようにする必要があります。

使用されているコードは次のとおりです。

function signup_form_process() {
global $ninja_forms_processing;
if ($ninja_forms_processing->get_form_ID() !== 7) {
return;
}
$url = 'https://' . APP_DOMAIN . '/account/alternative_signup';
$data = get_sign_up_form_data([
'email' => 11,
'name' => 12,
'password' => 13,
'time_zone_offset' => 26,
'gdpr_consent_date'=> 132,
'email_update_optin'=> 133,
]);
$old_account = login_old_api($data['email'], $data['password']);
$old_status_code = substr($old_account['response'], 0, 3);
$old_message = substr($old_account['response'], 
strpos($old_account['response'], '~') + 1);
if ($old_status_code === '200' || $old_status_code === '401' || 
$old_status_code === '409') {
$ninja_forms_processing->add_error('error_old_account', sprintf(__('The account %s already exists, <a href="%s" class="alert-link">please login here.</a>', 'sage'), $data['email'], home_url('/login/')));
return;
}
$options = [
'http' => [
  'header' => "Content-Type: application/json\r\n" .
              "Accept: application/json",
  'method'  => 'POST',
  'content' => json_encode($data),
  'ignore_errors' => true
],
];
$context  = stream_context_create($options);
$result = json_decode(file_get_contents($url, false, $context));
$headers = Utils\parse_headers($http_response_header);
Utils\log('Signup API Response:');
Utils\log(['response' => $result, 'headers' => $headers]);
if (strpos($headers['status'], '201') === 0) {
$data['username'] = $data['email'];
$data['remember_me'] = 0;
unset($data['email']);
unset($data['name']);
post_login($data);
} else {
if (is_array($result->error)) {
  $ninja_forms_processing->add_error('error_api', $result->error[1]);
} else if (!empty($result->error)) {
  $ninja_forms_processing->add_error('error_api', $result->error);
} else {
  $ninja_forms_processing->add_error('error_api', __('An unknown error occurred.', 'sage'));
}
}
}
add_action('ninja_forms_post_process', __NAMESPACE__ . '\\signup_form_process');

誰かがそれを素晴らしく助けることができれば、私は少し立ち往生しています!

クリス

回答 1 件
  • gdpr_consent_dateの入力の値を <?php date('H:i:s d-m-Y') ?> に設定します  そして、単に true  チェックボックス用。

    日付の書式設定は、必要に応じて変更できます。詳細については、こちらをご覧ください。

あなたの答え