2014-12-04 73 views
1

我的PHP知識是非常基本的。我已經構建了一個兒童主題,而functions.php完全來自網絡上的零碎。目前所有的作品都很棒,我已經在另一個網站上重複使用它。但在幾個地方,我不得不手動輸入博客名稱,電子郵件地址等。我想要的是使其可重複使用,而無需對此進行任何干預。我已經涵蓋了所有問題,但其中一個:更改默認的[email protected]電子郵件。WordPress的site_url字符串替換

// Changing default wordpress email settings 
add_filter('wp_mail_from', 'new_mail_from'); 
function new_mail_from($old) { 
    return '[email protected]'; 
} 

這個工作,雖然使其可重複使用而無需干預,我需要以某種方式獲取該網站的網址沒有http://www。我做了一個測試頁面,並使用:

$my_site = str_replace('www.','', $_SERVER['SERVER_NAME']); 
echo '[email protected]'.$my_site; 

它製作的test.php文件,但不是在WordPress的functions.php。郵件發送和接收,但發件人是「通知@」,沒有任何@後。我用它作爲

return '[email protected]'[email protected]_site; 

我嘗試另一種方法:

$custom_email = '[email protected]'.str_replace('www.','', $_SERVER['SERVER_NAME']); 
function new_mail_from($old) { 
    return $custom_email; 
} 

這一個不顯示任何發件人的話,那就是從「未知發件人」。 我試圖與site_url()而不是$ _SERVER,但我還沒有設法使其工作。我沒有嘗試使用home_url(),因爲在某些情況下,home_url()可能會使用自定義頁面(如登錄頁面)。

有沒有辦法解決我有這個問題?

謝謝。

+0

所以'$ my_site'是空的,那告訴你什麼?另外,看看PHP的'parse_url'函數,避免'str_replace'。 – Madbreaks 2014-12-04 00:11:30

+0

試試'$ _SERVER ['HTTP_HOST']'。 – Victory 2014-12-04 00:14:38

+0

** @ Madbreaks ** - 空的$ my_site不告訴我什麼,不幸的是。我真的不知道PHP是如何工作的,所以我不知道應該告訴我什麼。正如我所說,我的PHP知識是非常基礎的。我已經開始搞亂parse_url,什麼也沒有發生,但是我希望我能想出一些有用的東西。謝謝。 – 2014-12-04 11:41:37

回答

0

好,用從朋友一點幫助,我發現一些作品:

function new_mail_from($old) { 
    $custom_email = '[email protected]'.str_replace('www.','', $_SERVER['SERVER_NAME']); 
    return $custom_email; 
} 

因此,基本上所有我需要的是把$custom_email函數內。

@MadBreaks現在...我知道你的建議是爲了避免str_replace,但我沒能理解parse_url以及如何使用它。爲什麼不是str_replace是一個不錯的選擇?

@勝利$_SERVER['SERVER_NAME']$_SERVER['HTTP_HOST']爲我做了同樣的事情。你能告訴我有什麼區別嗎?或者在這種情況下使用他們每個人的利弊?謝謝。

+0

與str_replace,你可能會遇到像new.example.com子域名(電子郵件不可能只是子域)的麻煩。也就是說,parse_url也不夠。我會嘗試'get_option('admin_email')'。 – MSTannu 2014-12-04 21:16:07

+0

在這裏找到我的答案http:// stackoverflow。com/questions/2297403/http-host-vs-server-name,我想我會使用HTTP_HOST。仍然沒有完全理解它:P – 2014-12-04 21:39:29

+0

** @ MSTannu **你讓我更加困惑。 :)我太新手了,我無法在短時間內吸收所有這些。我一定會看看'get_option('admin_email')'作爲一個選項,並嘗試瞭解它。謝謝。 – 2014-12-04 21:43:47