Wie man Variablen von einer function in functions.php an eine andere übergeben kann

Ich habe eine function, die die Variablen aus der URL (UTM) bezieht:

/** Get Parameters From UTM **/ add_action('template_redirect', 'get_the_utm_vars'); // 'template_redirect' - action hook that fires before rendering the template function get_the_utm_vars(){ $utm_source = htmlspecialchars( $_GET["utm_source"] ); $utm_medium = htmlspecialchars( $_GET["utm_medium"] ); $utm_term = htmlspecialchars( $_GET["utm_term"] ); $utm_content = htmlspecialchars( $_GET["utm_content"] ); $utm_campaign = htmlspecialchars( $_GET["utm_campaign"] ); return $utm_source; return $utm_medium; return $utm_term; return $utm_content; return $utm_campaign; } 

und ich habe eine function, die die Kontaktformulareingaben erhält:

 /** Contact form using Ajax **/ add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form'); // Send information from the contact form function submit_contact_form(){ // If there is a $_POST['email']... if( isset($_POST['email']) && ($_POST['validation'] == true ) ) { $email = $_POST['email']; $email_to = "arik@example.pro"; $walid = 'walid@example.pro'; $fullname = $_POST['fullname']; $headers = array( 'From: '. $fullname .' ', 'BCC: yonatan@example.pro', 'BCC: gal@example.pro', 'BCC: eran@example.pro', 'BCC: tova@example.pro', 'BCC: walid@example.pro', 'Content-type: text/html; charset=\"UTF-8\"; format=flowed \r\n' ); $group_emails = array( 'info@example.com', 'gal@example.com', 'yonatan@example.com', 'arik@example.pro', 'tova@example.pro' ); $email_subject = "yellowHEAD Intro: $email"; $message = $_POST['text']; if ( wp_mail($email_to,$email_subject,$message,$headers) ) { // Tells me that the mail has been sent echo json_encode( array("result"=>"complete") ); //Add the UTM variables to the emails text $message .= "\r\n \r\n \r\n UTM Campaign: $utm_campaign \r\n "; // Auto mail to the user wp_mail($walid,$email_subject,$message); } else { echo json_encode(array("result"=>"mail_error")); var_dump($GLOBALS['phpmailer']->ErrorInfo); } wp_die(); } } 

Ich möchte sie in der E-Mail senden. Derzeit bekomme ich die Variablen nicht – Was ist der richtige Weg?

  • Beide functionen befinden sich in functions.php

Bearbeiten:

Ich habe das gefunden: https://stackoverflow.com/questions/18517705/pass-php-variable-created-in-one-function-to-another

Ich habe meine function bearbeitet zu:

 /** Get Parameters From UTM **/ add_action('template_redirect', 'get_the_utm_vars'); // 'template_redirect' - action hook that fires before rendering the template function get_the_utm_vars(){ global $utm_source; global $utm_medium; global $utm_term; global $utm_content; global $utm_campaign; $utm_source = htmlspecialchars( $_GET["utm_source"] ); $utm_medium = htmlspecialchars( $_GET["utm_medium"] ); $utm_term = htmlspecialchars( $_GET["utm_term"] ); $utm_content = htmlspecialchars( $_GET["utm_content"] ); $utm_campaign = htmlspecialchars( $_GET["utm_campaign"] ); } 

es funktioniert nicht für mich.

Bearbeiten Sie # 2 für @mtinsley:

Ich habe var_dump ($ utm) verwendet; in der ersten function nur um sicherzustellen, dass es die params bekommt, und es funktioniert übrigens.

 /** Get Parameters From UTM **/ add_action('template_redirect', 'get_the_utm_vars'); // 'template_redirect' - action hook that fires before rendering the template function get_the_utm_vars(){ global $utm; $utm = array(); $utm['utm_source'] = htmlspecialchars( $_GET["utm_source"] ); $utm['utm_medium'] = htmlspecialchars( $_GET["utm_medium"] ); $utm['utm_term'] = htmlspecialchars( $_GET["utm_term"] ); $utm['utm_content'] = htmlspecialchars( $_GET["utm_content"] ); $utm['utm_campaign'] = htmlspecialchars( $_GET["utm_campaign"] ); return $utm; } /** Contact form using Ajax **/ add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form'); // Send information from the contact form function submit_contact_form(){ $utm = get_the_utm_vars(); // If there is a $_POST['email']... if( isset($_POST['email']) && ($_POST['validation'] == true ) ) { $email = $_POST['email']; $email_to = "arik@example.pro"; $walid = 'walid@example.pro'; $fullname = $_POST['fullname']; $headers = array( 'From: '. $fullname .' ', 'BCC: yonatan@example.pro', 'BCC: gal@example.pro', 'BCC: eran@example.pro', 'BCC: tova@example.pro', 'BCC: walid@example.pro', 'Content-type: text/html; charset=\"UTF-8\"; format=flowed \r\n' ); $group_emails = array( 'info@example.com', 'gal@example.com', 'yonatan@example.com', 'arik@example.pro', 'tova@example.pro' ); $email_subject = "yellowHEAD Intro: $email"; $message = $_POST['text']; if ( wp_mail($email_to,$email_subject,$message,$headers) ) { // Tells me that the mail has been sent echo json_encode( array("result"=>"complete") ); //Add the UTM variables to the emails text $message .= "\r\n \r\n \r\n UTM Campaign: ".$utm['utm_campaign']." \r\n UTM Medium: ".$utm['utm_medium']." \r\n UTM Term: ".$utm['utm_term'] ."\r\n UTM Content: ".$utm['utm_content']." \r\n UTM Campaign: ".$utm['utm_campaign']." "; // Automail to the user wp_mail($walid,$email_subject,$message); } else { echo json_encode(array("result"=>"mail_error")); var_dump($GLOBALS['phpmailer']->ErrorInfo); } wp_die(); } } 

Solutions Collecting From Web of "Wie man Variablen von einer function in functions.php an eine andere übergeben kann"

get_the_utm_vars funktioniert nicht so, wie du denkst. Eine function kann nicht mehr als einen Wert zurückgeben. Gerade jetzt, wenn die erste Rückkehr erreicht ist, wird dieser Wert zurückgegeben und keine der folgenden Linien jemals erreicht.

Sie könnten stattdessen get_the_utm_vars ein Array von Werten zurückgeben:

 function get_the_utm_vars(){ $utm = array(); $utm['source'] = htmlspecialchars( $_GET["utm_source"] ); $utm['medium'] = htmlspecialchars( $_GET["utm_medium"] ); $utm['term'] = htmlspecialchars( $_GET["utm_term"] ); $utm['content'] = htmlspecialchars( $_GET["utm_content"] ); $utm['campaign'] = htmlspecialchars( $_GET["utm_campaign"] ); return $utm; } 

Dann könnten Sie get_the_utm_vars , um alle Ihre Parameter zu erhalten.

 $utm = get_the_utm_vars(); echo $utm['source']; // Will output $_GET["utm_source"] 

In Bezug auf Ihre aktualisierte function. Das könnte auch funktionieren. Wenn Sie auf eine dieser Variablen innerhalb einer function zugreifen müssen, müssen Sie sie global in Ihren Bereich importieren.

 function submit_contact_form() { global $utm_source, $utm_medium, $utm_term, $utm_content, $utm_campaign; // ... }