Kontakt Plugin mit variablem Empfänger

  • Hallo Leute,

    ich suche ein Kontaktformular Plugin, welches ich direkt im PHP-Template einbinden kann und bei dem ich den Empfänger variabel auswählen kann.

    Der Hintergrund ist wie folgt:
    Ich habe eine Buddypress Installation. Auf der Seite jedes Mitglieds möchte ich unten ein Kontaktformular einbinden, das die Möglichkeit bietet dem User eine Mail zu schicken. Die entsprechende Buddypress-Funktion, mit der ich die Email-Adresse des Users abfrage, habe ich bereits.

    Ich brauche also nur noch ein Plugin dem ich die Variable mit der Empfänger-Mail übergeben kann.

    Kennt ihr eins? Bei Contact Form 7 geht das wohl nicht wenn ich das richtig sehe.

    Gruß

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hallo Barodscheff.

    Du kannst über entsprechende Hooks in den Ablauf von ContactForm7 eingreifen.
    Hier eine kurze Funktion für die functions.php die helfen sollte (aber ungetestet ist):

    Dabei kannst Du entweder das Formularfeld mit dem Empfänger nach bestimmten Bedingungen umsetzen oder gleich die Empfänger ohne Formularfeld setzen.

    Letzteres kannst Du ggf. hier nochmal genauer nachsehen.

    Falls nutzbar, kannst Du auch über Benutzerdefinierte Felder arbeiten, was aber nicht ganz Deinen Anforderungen entspricht?


    Gruß,
    WiSch

  • Danke, das ist genau das was ich gesucht habe!
    Da ich noch nicht so lange im PHP-Teil von WP arbeite, hätte ich noch eine Frage.

    In meinem Template habe ich eine Variable die die Zieladresse beinhaltet und dann das Formular selbst:

    PHP
    $email_for_contact = bp_get_profile_field_data('field=Email for contact&user_id='.bp_loggedin_user_id());
    
    
    echo do_shortcode( '[contact-form-7 id="1235" title="Contact form 1"]' );

    Die Funktion die den Empfänger verändert steht aber in der functions.php. Wie kann ich die $email_for_contact der Funktion in der functions.php übergeben?

    Das funktioniert ja nicht:

    PHP
    function mycf7_before_send_mail($cf7) {
        // Empfaenger direkt setzen    
    $WPCF7_ContactForm->mail['recipient'] = $email_for_contact;
    }  add_action( 'wpcf7_before_send_mail', 'mycf7_before_send_mail' );

    Lieben Gruß und schon mal vielen Dank!

  • Hallo.

    Sieht nach Buddypress aus? Habe ich nicht im Einsatz, deshalb (ungetestet) vlt. so?

    Hier hat das jemand so gelöst...


    Gruß,
    WiSch

  • Momentan ist noch der Wordpress-Teil das Problem.
    Ich habe mir mal die von dir verlinkte Seite (Diese) genauer angeschaut. Dort habe ich festgestell, dass als Parameter

    PHP
    $WPCF7_ContactForm

    übergeben wird und nicht

    PHP
    $cf7

    Also habe ich daraufhin Folgendes testweise ausprobiert:

    PHP
    function mycf7_before_send_mail($WPCF7_ContactForm) {    
    $WPCF7_ContactForm->mail['recipient'] = "adresse@provider.de";
    }  
    add_action( "wpcf7_before_send_mail", "mycf7_before_send_mail" );

    Statt adresse@provider.de habe ich natürlich meine gewünschte Email-Adresse angegeben. Doch die Mail kommt weiterhin bei der hinterlegten Email-Adresse und nicht bei der überschriebenen an. Folgende Kombinationen habe ich noch (erfolglos) getestet:

    PHP
    function mycf7_before_send_mail(&$WPCF7_ContactForm) {    
    $WPCF7_ContactForm->mail['recipient'] = "adresse@provider.de";
    }  
    add_action( "wpcf7_before_send_mail", "mycf7_before_send_mail" );

    Durch das "&" entstand ein Fehler. Die Mail wurde gar nicht abgeschickt. Stattdessen hat das Formular ewig geladen. Erst nach der Aktualisierung der Seite wurde die Mail an die hinterlegte Mail abgeschickt.

    Das habe ich ebenfalls versucht:

    PHP
    function mycf7_before_send_mail($WPCF7_ContactForm) {    
    $WPCF7_ContactForm->mail['recipient'] = "Name <adresse@provider.de>";
    }  
    add_action( "wpcf7_before_send_mail", "mycf7_before_send_mail" );

    Hast du noch eine Idee woran es liegen könnte? Den Buddypress-Teil lasse ich jetzt sowieso erstmal außen vor.

  • [FONT=verdana][size=10]Ich hab's!
    Seit Version 3.9 funktioniert alles anders. Kann man hier nachlesen: http://contactform7.com/2014/07/02/contact-form-7-39-beta/

    Lösung:

    PHP
    function mycf7_before_send_mail($WPCF7_ContactForm) {        
    $mail = $WPCF7_ContactForm->prop('mail');        
    $mail['recipient'] = "email@provider.de";        
    $WPCF7_ContactForm->set_properties( array( 'mail' => $mail ) );
    }  
    add_action( "wpcf7_before_send_mail", "mycf7_before_send_mail" );

    Jetzt muss nur noch der Buddypress-Teil funktionieren. Das hier geht nicht:

    PHP
    function mycf7_before_send_mail($WPCF7_ContactForm) {        
    global $bp;        
    $new_recipient = bp_get_profile_field_data('field=Email for contact&user_id='.bp_loggedin_user_id());        
    $mail = $WPCF7_ContactForm->prop('mail');        
    $mail['recipient'] = $new_recipient;        
    $WPCF7_ContactForm->set_properties( array( 'mail' => $mail ) );
    }  
    add_action( "wpcf7_before_send_mail", "mycf7_before_send_mail" );

    Fehlermeldung:
    [/SIZE][/FONT][FONT=verdana][size=10]Failed to send your message. Please try later or contact the administrator by another method.[/SIZE][/FONT][FONT=verdana][size=10]
    Ideen?
    [COLOR=#777777]

    [/COLOR][/SIZE][/FONT]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!