Ich verwende das Kontaktformular 7 als Mailing-System auf meiner WordPress-Website. Ich verwende den Filter wpcf7_before_send_mail, um alle Daten an einen externen Webservice (SOAP) zu senden. Wenn ich eine "SUCCESS" -Nachricht von diesem Webservice erhalte, sollten alle wie gewohnt fortfahren, aber wenn ich eine "FAILED" -Nachricht erhalte, sollte Kontaktformular 7 keine E-Mail senden und eine andere Ausgabenachricht sollte auf der Webseite erscheinen. Ist es möglich, dies innerhalb der Funktion zu ändern?(Wordpress) Kontaktformular 7 Abbruch in before_send_mail Filter
<?
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
}
}
}
Sie haben ein Komma nach dem Div in Ihrer Funktion verpasst, aber damit funktioniert es perfekt. Würde es Ihnen etwas ausmachen, mir zu zeigen, wo Sie diese Informationen gefunden haben? Ich würde gerne lernen statt nur kopieren und einfügen. –
Ich freue mich zu hören, dass es für Sie funktioniert hat, danke für die Tippfehlerkorrektur. Sicher, ich habe gerade den Quellcode dieses Plugins durchgearbeitet, ich habe verschiedene Ideen ausprobiert, dieses hat funktioniert, das andere nicht. Also gab es keine Magie bei der Arbeit hier, außer Zeit mit einer Prise manueller Testarbeit zu verbringen ;-) @WarreBuysse – birgire
Ich stoße weiter gegen das gleiche Problem, nicht wirklich den Quellcode verstehe ich denke. Danke für die Erklärung. Es hat offensichtlich, vollkommen, gearbeitet. Ich werde deine Antwort akzeptieren. Danke noch einmal! –