ugrás a tartalomhoz

Wordpress emailküldés

Steve31 · 2013. Dec. 19. (Cs), 18.18
Sziasztok!

Van egy Wordpress sablonom, azon van egy kapcsolati űrlap, kitöltve elküldeném az adott címre, de nem jön össze. Ja nincs bejelentkezve senki, tehát mint vendégként akarok küldeni. Nem rég kezdtem megismerkedni a Wordpress-szel. Aki tud az segítsen. Előre is köszönöm!
 
1

Plugin

janoszen · 2013. Dec. 19. (Cs), 18.41
Negy lehetoseged van:

  • Keresel egy megfelelo plugint ami mukodik neked.
  • Megismerkedsz melysegeiben a Wordpress-szel onalloan.
  • Jol kerdezel, mert ebbol a kerdesbol kb semmit nem lehet megtudni, nemhogy segiteni.
  • Fizetsz valakinek, aki megcsinalja helyetted.
2

Köszi

Steve31 · 2013. Dec. 20. (P), 12.19
Köszi Janikám a segítséget, sokat segítettél. Megoldottam a problémámat :-)!
3

Ügyes vagy,

Pepita · 2013. Dec. 20. (P), 17.26
aztán nehogy kiírd ide, hogy mit nem tudtál elsőre, mert még véletlenül más is tanul belőle!

Én pedig könyvjelzőztem a linket, mert nagyon jó!... :)
4

Megoldás leírása

Steve31 · 2014. Jan. 2. (Cs), 11.17
Sziasztok!

Leírom hát a megoldás lényegét.
Előszóban annyit, hogy Ajax-osan működik a cucc.
Előbb telepítettem a wordpress-hez WP-mail-SMTP plugint.
Utána a következő kódot adtam hozzá a functions.php-ban:




// Mail send with ajax
function send_mail_with_ajax() {

    $messageDatas = array(
        "name" => filter_input(INPUT_POST, 'name'),
        "email" => filter_input(INPUT_POST, 'email'),
        "phone" => filter_input(INPUT_POST, 'phone'),
        "message" => filter_input(INPUT_POST, 'message')
    );

    if (checkDatas($messageDatas)) {
        $companyEmail = "user##kukac##valami.hu";
        $result = wp_mail($companyEmail, "Contact message was send from website", setMailMessage($messageDatas), setMailHeader($messageDatas));

        echo $result;
    }

    die();
}

function checkDatas($datas) {
    $checked = true;

    foreach ($datas as $key => $value) {
        if ($value === NULL || empty($value)) {
            $checked = false;
        }
    }

    return $checked;
}

function setMailHeader($messageDatas) {
    return "From : " . $messageDatas['name'] . " <" . $messageDatas['email'] . ">\r\n";
}

function setMailMessage($messageDatas) {
    if (!empty($messageDatas['phone'])) {
        $_message = $messageDatas['message'] . "\n\n";
        $_message.="My phone number: " . $messageDatas['phone'];
    } else {
        $_message = $messageDatas['message'];
    }

    return $_message;
}

add_action("wp_ajax_nopriv_send_mail", "send_mail_with_ajax");
A hozzátartozó javascript (jQuery) kód a következő módon működik:

$("#contact-form").on({
    submit: function(e) {
        e.preventDefault();
        e.stopPropagation();
        
        var postdata = $(this).serialize();
        
        $.ajax({
            url : window.WP_AJAX_URL,
            type : "POST",
            data : 'action=send_mail&' + postdata,
            success: function(result) {
                console.info(result);
            }
        });
        
    }
});
A window.WP_AJAX_URL az wordpress-es ajax komponens url-je.

Így valósítható meg a bejelentkezés nélküli wordpress mail küldés.
5

Sechole

janoszen · 2014. Jan. 2. (Cs), 11.31
Nem tudom, hogy az altalad telepitett plugin megcsinalja-e, de sztem figyelj arra, hogy a felado nevet es e-mail cimeben ne lehessen sortores, kulonben igen csunya secholet nyithatsz az oldaladon amin keresztul szepen lehet spamelni.