You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提交表单调用Jira API POST请求时出现500内部服务器错误

问题:WordPress中WPForms提交数据到Jira API触发500错误

问题背景

在WordPress中基于WPForms搭建表单,需求是提交表单后调用Jira API创建任务,但提交时出现500服务器错误,控制台提示WPForms AJAX提交失败。尝试过付费第三方插件(被要求禁止使用)、切换到Contact Form 7集成均未解决,目标是实现表单提交后成功向Jira发送POST请求并创建任务。

关联代码

function sendingDataToJira( $fields, $entry, $form_data, $entry_id) {

  $user = 'MY_USERNAME';
  $token = 'MY_TOKEN';

  $entry = wpforms()->entry->get( $entry_id );
  $entry_fields = json_decode( $entry->fields, true);

  if ($form_data['id'] == 3809) {
    $api_url = 'https://MY_URL/rest/api/2/issue/';
    $body = array (
      'fields' => array (
        'project'=> array (
          'key'=> 'ATS',
         ),
        'summary' => 'New Applicant',
        'description' => 'null',
        'customfield_10034' => $form_data[4]['value'],
        'customfield_10035' => $form_data[5]['value'],
        'issuetype' => array(
          'name' => 'Task',
        ),
     ),
   );

  $request = wp_remote_post( $api_url, array(
    'method' => 'POST',
    'headers' => array(
      'Authorization' => 'Basic' . base64_encode( $user . ':' . $token),
      'Content-Type' => 'application/json'),
    'body' => json_encode( $body ),
    'data_format' => 'body'
) );

  };
}

add_action( 'wpforms_process_complete', 'sendingDataToJira', 10, 4 );

错误详情

控制台错误

POST /wp-admin/admin-ajax.php 500
WPForms AJAX submit error

debug.log错误日志

[08-Dec-2022 07:37:38 UTC] PHP Fatal error:  Uncaught Error: Call to a member function get() on null in /home/u435205697/domains/olinno.com/public_html/wp-content/themes/landio/functions.php:127
Stack trace:
#0 /home/u435205697/domains/olinno.com/public_html/wp-includes/class-wp-hook.php(307): sendingDataToJira(Array, Array, Array, 0)
#1 /home/u435205697/domains/olinno.com/public_html/wp-includes/class-wp-hook.php(331): WP_Hook->apply_filters(NULL, Array)
#2 /home/u435205697/domains/olinno.com/public_html/wp-includes/plugin.php(476): WP_Hook->do_action(Array)
#3 /home/u435205697/domains/olinno.com/public_html/wp-content/plugins/wpforms-lite/includes/class-process.php(450): do_action('wpforms_process...', Array, Array, Array, 0)
#4 /home/u435205697/domains/olinno.com/public_html/wp-content/plugins/wpforms-lite/includes/class-process.php(109): WPForms_Process->process(Array)
#5 /home/u435205697/domains/olinno.com/public_html/wp-content/plugins/wpforms-lite/includes/class-process.php(875): WPForms_Process->listen()
#6 /home/u435205697/domains/olinno.com/pu in /home/u435205697/domains/olinno.com/public_html/wp-content/themes/landio/functions.php on line 127

修复方案

1. 解决致命错误:Call to a member function get() on null

wpforms()->entry->get($entry_id) 报错是因为wpforms()返回null,或钩子触发时WPForms的entry组件未初始化。实际上wpforms_process_complete钩子已将$entry作为参数传入,无需重复调用get(),直接使用即可,同时移除冗余的字段解码代码:

// 移除以下两行冗余代码
// $entry = wpforms()->entry->get( $entry_id );
// $entry_fields = json_decode( $entry->fields, true);

2. 修复Jira API授权头格式

Authorization头中Basic与base64编码字符串之间必须加空格,否则Jira无法识别授权信息:

'Authorization' => 'Basic ' . base64_encode( $user . ':' . $token),

3. 修正表单字段值获取方式

$form_data是表单配置数据,不是用户提交的输入值,用户输入应从钩子传入的$fields参数获取:

'customfield_10034' => $fields[4]['value'],
'customfield_10035' => $fields[5]['value'],

4. 添加错误日志排查(可选)

增加请求后的错误检查,便于排查Jira API请求状态:

// 发送请求后添加日志记录
if ( is_wp_error( $request ) ) {
    error_log( 'Jira API请求失败: ' . $request->get_error_message() );
} else {
    $response_code = wp_remote_retrieve_response_code( $request );
    error_log( 'Jira API响应状态码: ' . $response_code );
    if ($response_code !== 201) {
        error_log( 'Jira API响应内容: ' . wp_remote_retrieve_body( $request ) );
    }
}

修复后的完整代码

function sendingDataToJira( $fields, $entry, $form_data, $entry_id) {
    $user = 'MY_USERNAME';
    $token = 'MY_TOKEN';

    if ($form_data['id'] == 3809) {
        $api_url = 'https://MY_URL/rest/api/2/issue/';
        $body = array(
            'fields' => array(
                'project' => array(
                    'key' => 'ATS',
                ),
                'summary' => 'New Applicant',
                'description' => 'null',
                'customfield_10034' => $fields[4]['value'],
                'customfield_10035' => $fields[5]['value'],
                'issuetype' => array(
                    'name' => 'Task',
                ),
            ),
        );

        $request = wp_remote_post( $api_url, array(
            'method' => 'POST',
            'headers' => array(
                'Authorization' => 'Basic ' . base64_encode( $user . ':' . $token),
                'Content-Type' => 'application/json'
            ),
            'body' => json_encode( $body ),
            'data_format' => 'body'
        ) );

        // 错误日志记录
        if ( is_wp_error( $request ) ) {
            error_log( 'Jira API请求失败: ' . $request->get_error_message() );
        } else {
            $response_code = wp_remote_retrieve_response_code( $request );
            error_log( 'Jira API响应状态码: ' . $response_code );
            if ($response_code !== 201) {
                error_log( 'Jira API响应内容: ' . wp_remote_retrieve_body( $request ) );
            }
        }
    };
}
add_action( 'wpforms_process_complete', 'sendingDataToJira', 10, 4 );

内容的提问来源于stack exchange,提问作者Ngọc Khánh Hồ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:01:21