Aktion wird nicht nach einer PHP-Anfrage aufgerufen

Ich möchte per mailchimp einen Download-Link an den Benutzer senden, nachdem sie ein E-Mail-Formular ausgefüllt haben.

Der PHP-Request-Listener ruft my_function() , aber innerhalb dieser function wird die Aktion nicht aufgerufen .

Die functionen und die Aktion funktionieren. Auch nach dem setzen der do_action(); Innerhalb der createDownloadButton() wird es aufgerufen. Erst nachdem die Aktion in my_function() , funktioniert es nicht ?!

Innerhalb der functions.php :

  /** * Place a button * @return string html-form * usage: [download_button download_name='my_download'] */ function createDownloadButton($atts ){ //shortcode input $a = shortcode_atts( array( 'download_name' => '' ), $atts ); $result = '
'; $result .= ''; $result .= '

'; $result .= ''; $result .= ''; $result .= '

'; $result .= '
'; return $result; } add shortcode('download_button', 'createDownloadButton' ); /** * PHP request listener */ if( isset($_POST['email']) && isset($_POST['title']) ){ my_function($_POST['email'],$_POST['title']); } /** * Do some action here */ function my_function($mail, $title){ //echo works! echo "console.log( 'email: ".$mail." | download: ".$title."' );"; //why the action doen't work here? do_action('memberToMailchimpList', '', $mail, '', ''); }

Solutions Collecting From Web of "Aktion wird nicht nach einer PHP-Anfrage aufgerufen"

Ich habe es gerade getriggers!

Das Problem war, dass die php-Anforderungsbehandlung in WordPress anders funktioniert . Es muss eine Umgehung mit einem admin_post.php-Hook geben :

Anstelle von if( isset($_POST['email']) && isset($_POST['title']) ){...}

Ich musste diesen Haken benutzen:

 add_action( 'admin_post_nopriv_process_form', 'process_form_data' ); add_action( 'admin_post_process_form', 'process_form_data' ); function process_form_data() { my_function($_POST['email'],$_POST['title']); wp_redirect($_POST['url']); } 

Ein verstecktes Formularfeld wird verwendet, um diese function einzubinden. Für die Weiterleitung habe ich ein weiteres verstecktes Feld im Formular erstellt, um den Benutzer zurück zur vorherigen Seite zu leiten:

  $current_url="//".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; //... $result .= ''; //redirect $result .= ''; //hook 

Quelle: adaptiveweb.com