[Snippet] Ako zmeniť odosielateľa e-mailov vo WordPresse

Obrázok tohto článku

Obnova hesla, upozornenie na nového používateľa aj výsledok automatickej aktualizácie prídu z WordPressu od odosielateľa "WordPress" z adresy wordpress@vasadomena.sk. Príjemca z mena nespozná, od koho správa je, a na adresu sa nedá odpovedať, lebo taká schránka väčšinou neexistuje. Krátky kód v tomto článku dá namiesto "WordPress" názov webu, doplnok k nemu nastaví adresu skutočnej schránky. Odosielateľa, ktorého si nastavil plugin, formulár alebo WooCommerce, kód nechá tak.

Odkiaľ sa berie odosielateľ "WordPress"

Každý e-mail z webu posiela funkcia wp_mail(). Keď e-mail odosielateľa neurčí, WordPress doplní meno "WordPress" a adresu zloženú zo slova wordpress a domény webu bez www. Web na adrese www.kovac-a-syn.sk teda posiela ako "WordPress <wordpress@kovac-a-syn.sk>".

Nie každý e-mail z webu má predvoleného odosielateľa:

  • Obnova hesla, upozornenia na nových používateľov a správy o aktualizáciách ho majú vždy.
  • WooCommerce nastavuje odosielateľa e-mailov o objednávkach sám, podľa svojich nastavení.
  • Contact Form 7 má odosielateľa v karte Mail pri každom formulári. Nový formulár dostane názov webu a adresu administrátora, ak je na doméne webu, inak adresu wordpress@.
  • Upozornenie na nový komentár má v mene autora komentára a adresu wordpress@.

Názov webu, ktorý kód použije, je v administrácii v časti Nastavenia, Všeobecné, v poli Názov webovej stránky.

Všeobecné nastavenia WordPressu, označené pole Názov webovej stránky, pod ním pole Slogan

Pole Názov webovej stránky v časti Nastavenia, Všeobecné. Kód ho použije ako meno odosielateľa.

Kód

Kód vložte do súboru functions.php v odvodenej (child) téme, teda v téme, ktorá preberá vzhľad hlavnej témy a pri jej aktualizácii sa neprepíše. Ak odvodenú tému nemáte, poslúži doplnok na vkladanie kódu, napríklad Code Snippets. Kód začína rovno komentárom, bez úvodného <?php, takže ho môžete vložiť na koniec súboru za existujúci kód.

// odosielateľ e-mailov z WordPressu: názov webu namiesto "WordPress"

function jh_mail_from_name( $from_name ) {
	// meno, ktoré nastavil plugin alebo formulár, ostáva
	if ( 'WordPress' !== $from_name ) {
		return $from_name;
	}

	// názov webu z Nastavenia, Všeobecné, so znakom & a úvodzovkami ako text
	$site_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );

	return '' !== $site_name ? $site_name : $from_name;
}
add_filter( 'wp_mail_from_name', 'jh_mail_from_name' );

Kód sa pripája k filtru wp_mail_from_name, cez ktorý prechádza meno odosielateľa každého e-mailu. Mení len predvolené "WordPress". Keby vracal názov webu vždy, prepísal by aj meno, ktoré nastavil plugin alebo formulár, napríklad meno návštevníka v kontaktnom formulári.

Funkcia wp_specialchars_decode() rieši znaky, ktoré WordPress v názve webu ukladá zakódované. Web s názvom "Kováč & syn" by bez nej poslal e-mail od "Kováč &amp; syn".

Doplnok: adresa odosielateľa

Ak má web schránku, na ktorú sa dá odpovedať, napríklad info@ na vlastnej doméne, vložte pod kód vyššie aj tento. Adresu info@vasadomena.sk zmeňte na svoju.

// adresa odosielateľa: skutočná schránka namiesto wordpress@vasadomena.sk

function jh_mail_from( $from_email ) {
	// adresa, ktorú nastavil plugin alebo formulár, ostáva
	if ( ! str_starts_with( $from_email, 'wordpress@' ) ) {
		return $from_email;
	}

	// schránka musí existovať a byť na doméne webu
	return 'info@vasadomena.sk';
}
add_filter( 'wp_mail_from', 'jh_mail_from' );

Rovnako ako pri mene mení kód len adresu, ktorú si WordPress vymyslel sám. Dostanú ju aj formuláre Contact Form 7 a upozornenia na komentáre, ktoré by inak išli z adresy wordpress@. Meno odosielateľa v nich ostane také, aké nastavil formulár alebo komentár.

Na čo si dať pozor

  1. Adresa musí byť skutočná schránka na doméne webu. Server príjemcu kontroluje, či doména v adrese odosielateľa povolila serveru webu posielať poštu v jej mene (záznam SPF) a či správa nesie jej podpis (DKIM). Adresa z Gmailu alebo z inej domény touto kontrolou neprejde a e-mail skončí v spame alebo ho príjemca odmietne. Niektoré hostingy poštu z adresy, ktorá u nich neexistuje, rovno neodošlú.
  2. SMTP plugin má prednosť. Ak web posiela poštu cez SMTP plugin, napríklad WP Mail SMTP alebo FluentSMTP, meno a adresu odosielateľa nastavte v ňom a kód nepotrebujete. Keď odosielateľa mení plugin aj kód, ťažko sa hľadá, ktoré nastavenie platí.
  3. WooCommerce sa nastavuje zvlášť. E-maily o objednávkach majú odosielateľa v časti WooCommerce, Nastavenia, E-maily, v poliach Meno odosielateľa a Adresa odosielateľa. Kód ich nemení.

Nastavenie odosielateľa e-mailu vo WooCommerce, označené polia Meno odosielateľa a Adresa odosielateľa

Odosielateľ e-mailov WooCommerce v časti WooCommerce, Nastavenia, E-maily, úplne dole na stránke.

Čo kód nerobí

  • Nerieši e-maily, ktoré z webu neodchádzajú vôbec alebo padajú do spamu. Postup je v článku Čo robiť, keď WordPress neodosiela e-maily?
  • Nemení adresu pre odpoveď (Reply-To). Odpoveď ide na adresu odosielateľa, ak e-mail neurčí inú. Kontaktné formuláre ju bežne nastavujú na adresu návštevníka.
  • Nemení odosielateľa, ktorého nastavil plugin, formulár alebo WooCommerce.

Ako overiť, že kód funguje

  1. Po vložení kódu sa odhláste a na prihlasovacej stránke kliknite na "Zabudli ste heslo?".
  2. Zadajte svoje prihlasovacie meno alebo e-mail a nechajte si poslať odkaz na obnovu hesla. Heslo meniť netreba, odkaz po čase sám prestane platiť.
  3. V doručenej pošte má správa ako odosielateľa názov webu, s doplnkom aj novú adresu.
  4. V Gmaile cez tri bodky pri správe a "Zobraziť originál" vidno celý riadok From a výsledok kontroly SPF a DKIM. Pri oboch má byť PASS.

Kód som overil na WordPresse 7.1 s WooCommerce 11.2: obnova hesla aj bežný e-mail išli od názvu webu z novej adresy, e-maily WooCommerce a odosielateľ nastavený pluginom ostali bez zmeny. Filtre wp_mail_from a wp_mail_from_name má WordPress od verzie 2.3, funkciu str_starts_with() v doplnku dopĺňa od verzie 5.9 aj na staršom PHP. Kód teda funguje na každom WordPresse od verzie 5.9.

Zhrnutie

E-mail od "WordPress" pôsobí ako automat a príjemca ho ľahko prehliadne alebo zmaže. Kód vyššie dá namiesto neho názov webu a doplnok nastaví adresu, na ktorú sa dá odpovedať. Odosielateľa z pluginov a WooCommerce nechá tak, takže nič nerozbije. Pri adrese platí jediná podmienka: skutočná schránka na doméne webu. Ak nechcete kód do webu vkladať sami, pozrite si úpravy a opravy web stránok, alebo mi rovno napíšte.


Páčil sa vám tento článok? Zdieľajte ho na sociálnych sieťach alebo ho pošlite niekomu, komu by mohol pomôcť.

Zdieľať článok:
Ak chcete podporiť ďalšie články, kúpte mi kávičku.
Profilový obrázok autora článku
O autorovi článku

Juraj

Nezávislý profesionál s viac ako 10 rokmi skúseností v tvorbe webových stránok & eshopov a špecialista na WordPress. Pomáham klientom vytvárať funkčné, moderné a efektívne webové riešenia. Vo voľnom čase cestujem a oddychujem vo wellnesse. Rád varím a ešte radšej jem!

Pridať komentár