Word中的PHP Echo Wordpress Shortcode

时间:2016-07-21 09:02:52

标签: php wordpress forms echo

我正在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开发人员,你可能会说。

3 个答案:

答案 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)

我不得不从全球

调用$ response
function form_response(){
    echo $GLOBALS["response"];
}