5
我在我的WordPress网站上使用联系表格7作为邮件系统。我使用wpcf7_before_send_mail过滤器将所有数据发送到外部Web服务(SOAP)。当我收到该网络服务的“SUCCESS”消息时,所有消息都应该照常继续,但当我收到“FAILED”消息时,联系表单7不应发送电子邮件,并且网站上应显示不同的输出消息。是否可以在函数内改变它?(WordPress的)联系表格7中止在before_send_mail过滤器
<?
add_filter('wpcf7_load_js', '__return_false');
add_filter('wpcf7_load_css', '__return_false');
add_action('wpcf7_before_send_mail', 'wpcf7_soap_service');
//Pushen via SOAP service naar servers
function wpcf7_soap_service($contact_form) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
/*** POST variabelen ***/
$posted_data = $submission->get_posted_data();
/*** SOAP settings ***/
ini_set("soap.wsdl_cache_enabled", "0");
/*** variabelen opzetten ***/
define('BROADCAST_URL','XXX');
define('SIM_LOGIN', 'XXX');
define('SIM_PASSWORD', 'XXX');
define('ENV_KEY', 'XXX');
/*** login parameters ***/
$params = array(
'username' => SIM_LOGIN,
'password' => SIM_PASSWORD,
'environmentKey' => ENV_KEY,
);
/*** client opzetten ***/
$client = new SoapClient(
BROADCAST_URL,
array(
'soap_version' => SOAP_1_1
)
);
/*** Parameters ***/
$address["box"] = $posted_data["box"];
$address["country"] = $posted_data["country"];
$address["number"] = $posted_data["streetnumber"];
$address["postalcode"] = $posted_data["postalcode"];
$address["street"] = $posted_data["street"];
$address["town"] = $posted_data["town"];
$birthdate = $posted_data["birthdate"] . "T00:00:00";
$email = $posted_data["email"];
$firstname = $posted_data["firstname"];
$lastname = $posted_data["lastname"];
$phone = $posted_data["phone"];
/*** STDClass aanmaken met gevraagde data ***/
$std = new stdClass();
$std->Firstname = $firstname;
$std->Lastname = $lastname;
$std->Birthdate = $birthdate;
$std->Phone = $phone;
$std->Email = $email;
$std->Address = new stdClass();
$std->Address->Street = $address["street"];
$std->Address->Number = $address["number"];
$std->Address->Box = $address["box"];
$std->Address->PostalCode = $address["postalcode"];
$std->Address->Town = $address["town"];
$std->Address->Country = $address["country"];
if(!empty($_FILES['cv'])){
$std->Files = new stdClass();
$std->Files->File["FileName"] = $_FILES["cv"]["name"];
$std->Files->File["DataFile"] = base64_encode($_FILES["cv"]["tmp_name"]);
$std->Files->File["FileType"] = "CV";
}
/*** Functie OpenSession ***/
try{
$token = $client->OpenSession($params);
}catch(SoapFault $ex){
// ABORT OVER HERE
}
$token = $token->OpenSessionResult;
/*** Functie AddApplication ***/
try{
$result = $client->AddApplication(array("token" => $token, "application" => $std));
}catch(SoapFault $ex){
// ABORT OVER HERE
}
if($result->AddApplicationResult->Status == "Success"){
// ABORT OVER HERE
}
/*** Functie CloseSession ***/
try{
$app = $client->CloseSession($token);
}catch(SoapFault $ex){
// ABORT OVER HERE
}
}
}
你错过了函数中的div后面的逗号,但是它的工作原理完美。你介意告诉我你在哪里找到这些信息?我想学习,而不是仅仅复制粘贴。 –
很高兴听到它为你工作,感谢错字更正。当然,我只是通过插件的源代码,我尝试了各种想法,这一个工作,其他人没有。所以在这里工作并没有什么魔力,除了用少量的手工测试劳动花费时间*; @WarreBuysse – birgire
我继续碰到同样的问题,并没有真正理解我猜测的源代码。感谢您的解释。显然,它完美地解决了问题。我会接受你的回答。再次感谢! –