2

我想的電子郵件地址傳遞給WordPress的頁面,像這樣:如何防止Wordpress從URL查詢字符串中刪除「at」符號(@)?

http://www.website.com/[email protected] 

然而,WordPress的把它變成這樣:

http://www.website.com/?email=fakeemailyeahwho.com 

我甚至嘗試URL像這樣對其進行編碼:

http://www.website.com/?email=fakeemail%40yeahwho.com 

但WordPress的太聰明,仍然移除%40。

我知道@是一個保留字符,但我應該仍然可以使用URL編碼版本。唉,Wordpress不希望它如此。

如何強制Wordpress尊重@符號?我猜我要麼必須破解內部,要麼做一些mod_rewrite的魔法。

回答

2

http://www.webopius.com/content/137/using-custom-url-parameters-in-wordpress

首先,將它添加到你的主題的functions.php文件(或創建一個自定義插件來做到這一點):

add_filter('query_vars', 'parameter_queryvars'); 
function parameter_queryvars($qvars) 
{ 
    $qvars[] = 'email'; 
    return $qvars; 
} 

接下來,嘗試在URL中傳遞?email=fakeemail-AT-yeahwho.com然後轉換它回來這樣的事情:

global $wp_query; 
if (isset($wp_query->query_vars['email'])) 
{ 
    $getemail = str_replace('-AT-', '@', $wp_query->query_vars['email']); 
} 
// now use $getemail 

這隻會在一個非常罕見的電子郵件實際上有「-at-」 。如果你擔心這個問題,你可以替換一個更加模糊的字符串,如'-AT6574892654738-'。

無論您的最終解決方案是什麼,請不要破解核心以使其運行。 :)

1

我有一個類似的問題,我能夠將問題隔離到一個SEO插件。我確定該插件添加了一個過濾器的functions.php,但由於沒有使用插件卸載插件也解決了這個問題。

+0

哪個SEO插件? –

+0

我發現錯誤時應該記下來。我無法回想起插件或我正在嘗試追溯的客戶端。 –

0

我也有這個問題,但它不是由插件引起的。這是因爲您的網站網址有或沒有www的301重定向的結果。在裏面。

如果我的網站的網址定義爲http://www.mydomain.com,那麼這將如預期:http://www.mydomain.com/[email protected]

如果用戶來到網站爲:http://mydomain.com/[email protected](注:無WWW),然後WordPress的會重定向到這樣的:http://www.mydomain.com/?email=userdomain.com (注意:被刪除的@符號)

我的解決方案是在htaccess文件中硬編碼www重定向,所以WordPress永遠不會有機會混淆我的URL。這個頁面給出了示例htaccess行來將非www重定向到www,反之亦然:http://dense13.com/blog/2008/02/27/redirecting-non-www-to-www-with-htaccess/

-1

當我試圖在Wordpress中將Mailchimp數據傳遞給Gravity窗體時,我今天遇到類似問題。我找到了解決方案。最初的問題表明,Wordpress也剝奪了%40,但在這種情況下它並不適合我。

1)在Mailchimp中創建一個新的合併標籤。我打電話給我的'電子郵件參數'和* | EMAIL2 | *

2)導出你的用戶

3)複製正常的「電子郵件」一欄中的內容到新的「電子郵件帕拉姆」名單之列。

4)做一個查找和所有的@符號替換爲%40

5)導入您的列表,勾選框,自動更新,列出

6)更新您的網址,包括新參數 * | EMAIL2 | *

這對我有效。

相關問題