2016-07-21 17 views
3

Ich baue eine Reihe von Formen Shortcodes in Wordpress. Ich habe es aufgegeben, das Formularverarbeitungs-Skript in einen Shortcode umzuwandeln und werde es nur für alle Seiten verfügbar machen.PHP Echo in Wordpress Shortcode

Es gibt jedoch ein Echo, das die Antwort des Formulars ausgibt, das ich in seinen eigenen Shortcode einfügen möchte.

<?php echo $response; ?> 

Dies muss oben im Formular angezeigt werden, damit Validierungsmeldungen an der richtigen Stelle angezeigt werden.

Gesamtformularverarbeitungscode:

<?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 ="[email protected]"; 
    $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; ?> 

Ich habe unter anderem versucht, die wahrscheinlich ein PHP-Entwickler zum Lachen bringen würde.

function form_response(){ 
    echo $response; 
} 

function form_response(){ 
    echo '<?php echo "$response"; ?>'; 
} 

Haftungsausschluss Ich bin kein PHP-Entwickler, wie Sie wahrscheinlich sagen können.

Antwort

0

Ich hatte $ Antwort von globalen

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

Versuchen

else if ($_POST['submitted']) my_contact_form_generate_response("error", $missing_content); 

Um

else if ($_POST['submitted']){ 
    $response = 'Some things'; 
    $response .= my_contact_form_generate_response("error", $missing_content); 
    return $response; 
} 
+0

ich dies den Shortcode Bit versucht anzurufen, ohne dabei aber es hat nicht auch die Ausgabe etwas würde dies noch nicht in einer Funktion arbeitet durch einen Shortcode gezogen? –

+0

In shortcode müssen Sie return verwenden. Nicht echo bro –

+0

So zu übersetzen ... ... sonst if ($ _POST ['eingereicht']) { $ response = 'Einige Dinge'; Echo $ Antwort; my_contact_form_generate_response ("error", $ missing_content); } > Dann wird die Short Funktion Funktion form_response() { return $ Antwort?; } Ich etwas fehlt, wie die Seite jetzt unter dem Formularteil leer ist. Ich verstehe auch nicht, warum Sie $ response auf eine zufällige Zeichenfolge setzen würden? –

2

In der my_contact_form_generate_response Funktion zu ändern, Sie return $response; zuunterst vor dem Schließen } für die Funktion tun können.

Dann können Sie echo my_contact_form_generate_response($type, $message); tun und es wird der return Wert, der $response in diesem Fall sein wird.

+0

Danke, aber ich bin mir immer noch nicht sicher, wie das Echo innerhalb einer Funktion funktioniert, die ich als Shortcode ziehen kann. –

Verwandte Themen