Contact Form w Wordpressie nie działa (chyba z powodu funkcji w functions.php)

0

Poniżej znajduje się kod do mojego customowego contact form, w którym musi być jakiś błąd (może ktoś go znajdzie), bo jak wpisuję adres mojej strony http://muzykablog.pl/ to URL przeskakuje na http://muzykablog.pl/page-kontakt.php?msg_sent=true ...

Oto kod jaki dałem w mojej stronie kontaktowej (page-kontakt.php) generujący contact form :

<h4>Send Us Mail</h4><br/>
                 
                 
    <?php
if ($_GET[msg_sent]=='true' ) {
    echo '<div>Your message has been sent!</div>';
}elseif ($_GET[msg_sent]=='false') {
    echo '<div>An error occurred sending your message.</div>';
}else{
?>           
                 
                                <form method="post" action="functions.php">
            <label>Name</label>
            <input name="name" placeholder="Type Here">
     
            <label>Email</label>
            <input name="email" type="email" placeholder="Type Here">
                     
            <label>Message</label>
            <textarea name="message" placeholder="Type Here"></textarea>
             
            <label>*What is 2+2? (Anti-spam)</label>
            <input name="human" placeholder="Type Here">
                     
            <input id="submit" name="submit" type="submit" value="Submit">
             
        </form>
         
        <?php } ?>

A to jest odpowiednia funkcja do tego contact form, którą dodałem w w functions.php:

// KONTAKT - MESSAGE SENDING FUNCTIONS FOR page-kontakt.php
 
 
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: http://muzykablog.pl/'; 
    $to = '[email protected]'; 
    $subject = 'Hello';
    $human = $_POST['human'];
             
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
                 
    if(mail($to, $subject, $body, $from)){
    header('Location:page-kontakt.php?msg_sent=true');
}else{
    header('Location:page-kontakt.php?msg_sent=false');
}

Gdzieś tu musi być jakiś błąd.

0

Zamiast GET użyj metody POST.

0
Tumeg napisał(a):

Zamiast GET użyj metody POST.

Nie działa nadal :P

0

Fatal error: Call to undefined function add_action() in /home/stdeja/domains/muzykablog.pl/public_html/wp-content/themes/Fotograf/functions.php on line 7

pokaż całe functions.php, zmień nazwy pól w formularzu name, email, message na coś innego bo np "name" jest zarezerwowane dla wordpressa i w własnym formularzu nie będzie działać.

0

Sam zauważyłem już że taka linijka z mojego pierwszego postu rozpoczynającego temat nie zadziała w wordpress bo nie ma tu absolute path:

form method="post" action="functions.php">

....bo wtedy po wysłaniu formularza przez submit button ścieżka będzie http://muzykablog.pl/kontakt/functions.php która nie istnieje, musi być http://muzykablog.pl/wp-content/themes/Fotograf/functions.php więc zmieniłem to na coś innego ( z absolute path które są zdefiniowane w functions.php przez:

<?php echo LEARNINGWORDPRESS_THEME_URL ?>

...zgodnie z tym jak definiował absolute path człowiek w kursie eduweb.pl pt: "Kurs WordPress - Tworzenie Motywów"), ale, jak bedzie widać poniżej, to nie rozwiązuje jeszcze całego problemu:

<form method="post" action="<?php echo LEARNINGWORDPRESS_THEME_URL ?>functions.php">

Oto kody do pełnych page-kontakt.php i functions.php (dodam że ten cały kod formularza i funkcji sprawdziłem działa w przypadku strony STATYCZNEJ, dopiero tutaj w wordpressie coś się sypie):

https://www.dropbox.com/s/my01e9lewt2w5xh/page-kontakt.php?dl=0

https://www.dropbox.com/s/9qwhfcy937pn8aa/functions.php?dl=0

W functions.php ten odnośnik poniżej który ma powodować powrót do strony page-kontakt.php też nie zadziała chyba bo chyba ścieżka źle zdefiniowana (podobnie jak powyżej) i nie ma absolute path:

header('Location:page-kontakt.php?msg_sent=true');

Nie wiem czy to jest tylko kwestia złych ścieżek czy może w ogóle taki kod w wordpressie nie zadziała.

Jestem skłonny wywalić cały ten formularz i zamienić na inny jeśli ktoś poda działający kod ktoś na stackoverflow zasugerował użycie innej funkcji mianowicie - mail() function

0

oczy krwawią. Dlaczego nie użyjesz choćby z Contact Form 7?

Co do samego kodu, to źle się do tego zabierasz. Najlepiej wysyłaj formularz ajaxem i jak zapytanie zwróci OK, to przekieruj stronę gdzieś indziej.
Do poczytania:

Poza tym użyj WP_Mail -> https://codex.wordpress.org/Function_Reference/wp_mail

Dokumentacja to Twój przyjaciel - nie wróg :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1