我的PHP知识非常基础。我已经构建了一个子主题,而functions.php则全部来自网络上的点点滴滴。目前一切都很棒,我在其他网站上重复使用它。但在一些地方我不得不手动输入博客名称,电子邮件地址等。我想要的是让它可以重复使用而不需要任何进一步的干预。我已经涵盖了所有问题,但其中一个:更改了默认的wordpress@example.com电子邮件。
// Changing default wordpress email settings
add_filter('wp_mail_from', 'new_mail_from');
function new_mail_from($old) {
return 'notifications@example.com';
}
虽然可以在没有干预的情况下重复使用,但我需要以某种方式检索网站的网址,而不需要http://
和www
。我已经制作了测试页并使用了:
$my_site = str_replace('www.','', $_SERVER['SERVER_NAME']);
echo 'notifications@'.$my_site;
它适用于test.php
文件,但不适用于Wordpress' functions.php
。邮件是发送和接收的,但发件人是'通知@' @之后什么都没有。我已将它用作
return 'notifications@'.@my_site;
我尝试了另一种方法:
$custom_email = 'notifications@'.str_replace('www.','', $_SERVER['SERVER_NAME']);
function new_mail_from($old) {
return $custom_email;
}
这个根本不显示任何发件人,它来自"未知发件人"。
我曾尝试使用site_url()
代替$ _SERVER
,但我还没有设法让它发挥作用。我没有尝试使用home_url()
,因为在某些情况下home_url()
可能会使用自定义页面(例如着陆页)。
有没有办法解决我的这个问题?
谢谢。
答案 0 :(得分:0)
好的,在朋友的帮助下,我发现了一些有用的东西:
function new_mail_from($old) {
$custom_email = 'notifications@'.str_replace('www.','', $_SERVER['SERVER_NAME']);
return $custom_email;
}
所以基本上我只需要将$custom_email
放在函数中。
@MadBreaks 现在......我知道您的建议是避免str_replace
,但我没有设法理解parse_url
以及如何使用它。为什么str_replace
不是一个好的选择?
@Victory $_SERVER['SERVER_NAME']
和$_SERVER['HTTP_HOST']
为我做了同样的事情。你能告诉我它的区别吗?或者在这种情况下使用它们各有利弊?谢谢。