【发布时间】:2018-11-04 16:01:18
【问题描述】:
我有一个在 Ninja Forms 中运行的表单,并且有一段自定义代码可以将详细信息触发到外部 API,我遇到的问题有两个。
我需要这样做,以便如果您勾选 gdpr_consent_date 复选框,它会通过此过程向 API 触发一个日期时间(js 时间戳),然后如果您勾选 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');
我有点卡住了,如果有人可以提供帮助,那就太棒了!
克里斯
【问题讨论】:
-
没有足够的代码来提供帮助
-
已更新到函数中使用的完整代码
标签: php wordpress forms validation