06 10 10 Wysyłanie emaili w Wordpresie
Usługa email jest z nami od ponad 40 lat. Każdy poważny framework czy system zarządzania treścią posiada wsparcie dla niej.
Nie inaczej jest w przypadku Wordpresa. Niniejszw wpis ma na celu przedstwić jak w łatwy sposób i z pomocą kilku linijek kodu wysłać wiadomości z Wordpresa.
Wordpres jest systemem zarządzania treścią napisanym w PHP. Na upartego można więc skorzystać z funkcji mail, która jest standardowo dostępna w tym języku programowania. WordPress idzie jednak nieco dalej udostępniając nie tylko podstawową funkcjonalność, ale również kilka dodatkowych haków oraz możliwość wysłania wiadomości z pomocą protokołu SMTP ( będzie o tym w którymś z przyszłych wpisów).
Technicznie za wysyłanie emaili w Wordpresie odpowiada bardzo popularna biblioteka o nazwie PHPMailer.
Jako użytkownicy Wordpresa, oczywiście nie musimy się przejmować konfiguracją PHPMailer. System robi to za nas. Wszystko po to aby wysyłanie wiadomości było maksymalnie uproszczone.
Do wysyłania wiadomości w Wordpresie słyży funkcja wp_mail.
Wp_mail, przyjmuje kilka argumentów, które odnoszą się do standardowych informacji, jakie są wymagane do dostarczenia wiadomości i wyglądają one jak następuje:
to – docelowy adres email w postaci łańcucha znaków lub tablicy,
subject – temat wiadomości w postaci łańcucha znaków,
message – wiadomość w postaci łańcucha znaków,
headers – ewentualne dodatkowe nagłówki w postaci łańcucha znaków lub tablicy,
attachements – ewentalne załączniki w postaci tablicy
Funkcja zwraca logiczną prawdę (w przypadku poprawnego przeprowadzenia operacji wysyłania emaila) lub fałsz.
Wysyłanie emaili z Wordpresa w praktyce
Najprostsze możliwe i poprawne wywołanie funkcji wp_mail może wyglądać jak następuje:
wp_mail( 'email@twoja_domena.pl','Temat wiadomości','Treść wiadmości');
Funkcja wp_mail standardowo korzysta z kodowania znaków dla bloga (ustawione w tabeli wp_options bazy danych). Najczęściej jest to UTF-8. Jeżeli w jakimś celu chcemy zmienić ów kodowanie, można tego dokonać jak następuje:
add_filter('wp_mail_charset','change_charset');
function change_charset($charset){
return 'ISO-8859-2';
}
Powyższy kod zamienia oznaczenie domyślnego kodowania na ISO-8859-2.
Aby zmienić to, od kogo (adres email) jest wysyłana wiadomość, przed wywołanie funkcji wp_mail wystarczy dodać kilka linii kodu do filtra wp_mail_form:
add_filter('wp_mail_from','change_from');
function change_from(){
return 'some_example_address@some_domain.com';
}
Aby zmienić typ zawartości emaila z czystego tekstu na HTML:
add_filter('wp_mail_content_type','change_content_type');
function change_content_type(){
return 'text/html';
}
add_action('wp_head','send_my_email');
function send_my_email(){
wp_mail('my_email_box@my_domain','Temat','<h1>Nowa wiadomość</h1><p>Treść wiadomości</p>');
}
Aby dodać dodatkowe dane o wysyłającym przed jego adresem email, a co za tym idzie ułatwić identyfikację osoby wysyłającej wiadmość:
add_filter('wp_mail_from_name','change_from_name');
function change_from_name(){
return 'Sylwek Wojnowski';
}
Jeżeli nie ustawimy tego pola, przyjmie ono Wartość WordPress.
Większość kodu przedstawionego powyżej korzysta z haków. Jeżeli nie wiesz jak ich używać, polecam przeczytać moje wpisy na temat akcji i filtrów.
Wracając do wysyłania emaili,
aby ustawić adres zwrotny dla wiadomości można należy ustawić dodatkowy nagłówek:
wp_mail('some_email@some_domain.com','Temat','Wiadomość','Reply-To: reply_to@your_domain.com' . "\r\n");
Aby wysłać email z załącznikiem wystarczy kod jak poniżej:
wp_mail('some_email@some_domain.com','Temat','Wiadomosc',array(),array("/sciezka/do/pliku/zalacznika/na/serwerze"));
Każdy z powyższych przykładów powinien być umieszony w pliku wtyczki lub pliku functions.php aktywnego motywu.
Dodatkowe informacje
Funkcja wp_mail jest zapisana w pliku wp-includes/pluggable.php, co umożliwia jej łatwe zastąpienie w plikach wtyczki lub pliku motywu functions.php.
Funkcja wp_mail ma swoją stronę w kodeksie Wordpresa. Nie ma tam zbyt wiele informacji o niej, nie mniej jednak warto przyjrzeć się temu co jest.
Objaśnienia oraz przykłady użycia dla klasy PHPMailer można znaleźć na tej stronie. Samą klasę można znaleźć w pliku wp-includes/class.phpmailer.php instalacji Wordpresa.
Autor wpisu jest blogerem, programistą PHP, administratorem Linux oraz twórcą blogów
RSS Subskrybuj wpisy bloga