如何以编程方式提交联系人表单7

fdx2calv  于 2022-11-02  发布在  WordPress
关注(0)|答案(3)|浏览(226)

我想提交联系人表单的自定义功能下面的代码是获得的示例,但当提交。它提交的形式,但不是我想要的字段。

$item = wpcf7_contact_form( $formId );
$result = $item->submit();

在这里我可以传递我在管理面板中定义的字段,如**“textarea-123”&“email-234”**?

fcy6dtqo

fcy6dtqo1#

我没有得到确切的答案,我看什么,但我找到了替代解决方案。

function cf7Submit($formId , $args) {
    $url = 'http://example.com/wp-json/contact-form-7/v1/contact-forms/'.$formId.'/feedback';
    $response = wp_remote_post( $url, array(
        'method'      => 'POST',
        'body'        => $args
        )
    );

    if ( is_wp_error( $response ) ) {
        $error_message = $response->get_error_message();
        echo "Something went wrong: $error_message";
    } else {
        echo 'Response:<pre>';
        print_r( $response );
        echo '</pre>';
    }
}

我可以这样调用这个函数:

cf7Submit(128, array(
'textarea-123' => 'test email',
'email-234' => 'asd@asd.com'));
czfnxgou

czfnxgou2#

@daraptoor已经找到了一个很好的解决方案,但正如@davevsdave在评论中注意到的,它在CF 7 5. 6中并不能正常工作。
错误415是由于向API检查中添加了传递到请求标头中的内容类型而导致的:

// part of create_feedback() from CF7's rest-api.php
if ( ! str_starts_with( $content_type, 'multipart/form-data' ) ) {

要解决这个问题,只需将预期的内容类型添加到请求头中:

$response = wp_remote_post( $url, array(
    'method'      => 'POST',
    'headers'     => array(
        'Content-Type' => 'multipart/form-data'
    ),
    'body'        => $args
    )
);
vsdwdz23

vsdwdz233#

你可以添加一段JS代码,比如:
$("form.wpcf7").submit()

相关问题