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.


Twój komentarz





Niektóre tagi XHTML są dozwolone
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>