Wordpress site_url字符串替换

时间:2014-12-04 00:08:56

标签: php wordpress

我的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()可能会使用自定义页面(例如着陆页)。

有没有办法解决我的这个问题?

谢谢。

1 个答案:

答案 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']为我做了同样的事情。你能告诉我它的区别吗?或者在这种情况下使用它们各有利弊?谢谢。