我想将提交到wordpress重力表单上的表单数据发布到第三方erp软件,该软件只接受soap信封。重力forms elitle包提供只有json和form数据两种格式的webhooks,是否可以将数据作为表单发布。下面是wsdl,我需要用表单字段映射它。如果没有,那么我的选择是什么,请帮助,因为这是一个帮助朋友的项目。
我需要填写的WSDL:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:v3="http://schemas.datacontract.org/2004/07/V3.WebServiceInterface.Models.V3" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/">
<soapenv:Header/>
<soapenv:Body>
<tem:AddJobs>
<!--Optional:-->
<tem:jobs>
<!--Zero or more repetitions:-->
<v3:Job ser:Id="" ser:Ref="">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>My_test_Jalal</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>verrantque per auras</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>per auras</v3:FormName>
<!--Optional:-->
<v3:Asset ser:Id="circum claustra" ser:Ref="nimborum in">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>foedere certo</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>profundum quippe ferant</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>et carcere</v3:FormName>
<!--Optional:-->
<v3:Customer ser:Id="iovis rapidum iaculata" ser:Ref="speluncis abdidit">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>bella gero et</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>flammas turbine</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>hoc metuens</v3:FormName>
<!--Optional:-->
<v3:Contacts>
<!--Zero or more repetitions:-->
<v3:Contact ser:Id="ac vinclis" ser:Ref="speluncis abdidit">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>aris imponet honorem</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>praeterea aut</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>claustra fremunt</v3:FormName>
</v3:Contact>
</v3:Contacts>
<!--Optional:-->
<v3:Products>
<!--Zero or more repetitions:-->
<v3:Product ser:Id="imperio premit" ser:Ref="quisquam numen">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>ac vinclis</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>ac vinclis</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>pectore flammas</v3:FormName>
</v3:Product>
</v3:Products>
</v3:Customer>
<!--Optional:-->
<v3:Products>
<!--Zero or more repetitions:-->
<v3:Product ser:Id="pectore flammas" ser:Ref="annos bella gero">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>certo et</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>rates evertitque aequora</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>volutans nimborum in</v3:FormName>
</v3:Product>
</v3:Products>
</v3:Asset>
<!--Optional:-->
<v3:Contacts>
<!--Zero or more repetitions:-->
<v3:Contact ser:Id="faciat maria" ser:Ref="et quisquam">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>et soror</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>annos bella gero</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>ventos tempestatesque sonoras</v3:FormName>
</v3:Contact>
</v3:Contacts>
<!--Optional:-->
<v3:Customer ser:Id="regina iovisque" ser:Ref="rapidum iaculata">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>insuper altos</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>cum murmure</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>in patriam</v3:FormName>
<!--Optional:-->
<v3:Contacts>
<!--Zero or more repetitions:-->
<v3:Contact ser:Id="abdidit atris hoc" ser:Ref="coniunx una cum">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>ipsa iovis</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>frenat illi indignantes</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>nimborum in</v3:FormName>
</v3:Contact>
</v3:Contacts>
<!--Optional:-->
<v3:Products>
<!--Zero or more repetitions:-->
<v3:Product ser:Id="mollitque animos" ser:Ref="montis insuper altos">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>molemque et montis</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>gero et</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>circum claustra fremunt</v3:FormName>
</v3:Product>
</v3:Products>
</v3:Customer>
<!--Optional:-->
<v3:ProductRows>
<!--Zero or more repetitions:-->
<v3:ProductRow ser:Id="montis insuper" ser:Ref="aris imponet">
<!--Optional:-->
<v3:Fields>
<!--Zero or more repetitions:-->
<v3:Field>
<!--Optional:-->
<!--type: string-->
<v3:Name>aris imponet</v3:Name>
<!--Optional:-->
<!--type: string-->
<v3:Value>incedo regina</v3:Value>
</v3:Field>
</v3:Fields>
<!--Optional:-->
<!--type: string-->
<v3:FormName>ac vinclis</v3:FormName>
</v3:ProductRow>
</v3:ProductRows>
<!--Optional:-->
<v3:SubJobs/>
</v3:Job>
</tem:jobs>
</tem:AddJobs>
</soapenv:Body>
</soapenv:Envelope>`
我想知道这里是否有人尝试过这一点,因为超过一半的互联网运行wordpress网站,而且我对wsdl非常熟悉。我尝试将上面的soap信封提交给端点,但是失败了,所以不知道xml中有什么问题。
发布于 2022-11-10 11:55:46
在表单提交之后,您可以尝试使用garivty表单操作。您可以根据提交的数据准备soap,并使用库发送请求。
参考链接:https://docs.gravityforms.com/gform_after_submission/
谢谢!
发布于 2022-11-14 20:36:11
您可以使用动作钩子发布数据。
适用于所有表格。
add_action( 'gform_after_submission', 'after_submission', 10, 2 );适用于特定的表单。在这种情况下,表单id 5。
add_action( 'gform_after_submission_5', 'after_submission', 10, 2 );将数据发送给第三方的功能
add_action( 'gform_after_submission', 'post_to_third_party', 10, 2 );
function post_to_third_party( $entry, $form ) {
$endpoint_url = 'https://thirdparty.com';
$body = array(
'first_name' => rgar( $entry, '1.3' ),
'last_name' => rgar( $entry, '1.6' ),
'message' => rgar( $entry, '3' ),
);
GFCommon::log_debug( 'gform_after_submission: body => ' . print_r( $body, true ) );
$response = wp_remote_post( $endpoint_url, array( 'body' => $body ) );
GFCommon::log_debug( 'gform_after_submission: response => ' . print_r( $response, true ) );}
https://stackoverflow.com/questions/74385292
复制相似问题