我正在Wordpress中构建一组表单短代码。我已经放弃了尝试将表单处理脚本变成一个短代码,并且只是让它可用于所有页面。
然而,有一个回声表示我希望将表单的响应放入其自己的短代码中。
<?php echo $response; ?>
这需要放在表单的顶部,以便验证消息显示在正确的位置。
总表单处理代码:
<?php
//response generation function
$response = "";
//function to generate response
function my_contact_form_generate_response($type, $message){
global $response;
if($type == "success") $response = "<div class='callout success'><p>{$message}</p></div>";
else $response = "<div class='callout error'><p>{$message}</p></div>";
}
// response messages
$not_human = "Please fill out the human verification field to prove you are not a spam robot. A number 2 will do the job nicely.";
$missing_content = "It looks like we are missing something. Please chek the form below.";
$email_invalid = "That email Address doesn't look quite right.";
$message_unsent = "Your message wasn't sent. Please have another go. If it still doesn't work then please call us using the number supplied.";
$message_sent = "Thank you for your enquiry. We will be in contact shortly.";
// user posted variables
$business_name = $_POST['message_business_name'];
$first_name = $_POST['message_first_name'];
$last_name = $_POST['message_last_name'];
$email = $_POST['message_email'];
$phone = $_POST['message_phone'];
$human = $_POST['message_human'];
$location = $_POST['location'];
$message_opt_in = $_POST['message_opt_in'];
$optin = "";
if ($message_opt_in == "on"){
$optin = "The user has opted in to marketing emails";
}
else {
$optin = "!!!!!!!!!!!!!!!!!!!!!!\n\n The user has NOT opted in to marketing emails! \n\n!!!!!!!!!!!!!!!!!!!!!!\n\n";
}
$body = "$optin \n\n\n\n This message was sent from xxx.com $location\n\nBusiness name: $business_name \nName: $first_name \nName: $last_name \nEmail: $email \nPhone: $phone";
//php mailer variables
$to ="xxx@xxx.com";
$subject = "Someone sent a message from ".get_bloginfo('name');
$headers = 'From: '. $email . "\r\n" .
'Reply-To: ' . $email . "\r\n";
if(!$human == 0){
if($human != 2) my_contact_form_generate_response("error", $not_human); //not human!
else {
//validate email
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
my_contact_form_generate_response("error", $email_invalid);
else //email is valid
{
//validate presence of name and message
if(empty($business_name) || empty($first_name) || empty($email)){
my_contact_form_generate_response("error", $missing_content);
}
else //ready to go!
{
$sent = wp_mail($to, $subject, strip_tags($body), $headers);
if($sent) my_contact_form_generate_response("success", $message_sent); //message sent!
else my_contact_form_generate_response("error", $message_unsent); //message wasn't sent
}
}
}
}
else if ($_POST['submitted']) my_contact_form_generate_response("error", $missing_content);
?>
<?php echo $response; ?>
我尝试过其他可能让PHP开发人员大笑的事情。
function form_response(){
echo $response;
}
function form_response(){
echo '<?php echo "$response"; ?>';
}
免责声明我可能不是PHP开发人员,你可能会说。
答案 0 :(得分:2)
在my_contact_form_generate_response
函数中,您可以在函数结束return $response;
之前的最底部执行}
。
然后,您可以执行echo my_contact_form_generate_response($type, $message);
,它将回显return
值,在这种情况下将为$response
。
答案 1 :(得分:0)
尝试更改
else if ($_POST['submitted']) my_contact_form_generate_response("error", $missing_content);
要
else if ($_POST['submitted']){
$response = 'Some things';
$response .= my_contact_form_generate_response("error", $missing_content);
return $response;
}
答案 2 :(得分:0)
我不得不从全球
调用$ responsefunction form_response(){
echo $GLOBALS["response"];
}