我正在尝试将电子邮件地址传递给wordpress页面,如下所示:
http://www.website.com/?email=fakeemail@yeahwho.com
但是,Wordpress将其转化为:
http://www.website.com/?email=fakeemailyeahwho.com
我甚至尝试对其进行URL编码:
http://www.website.com/?email=fakeemail%40yeahwho.com
但是Wordpress太聪明了,仍然会移除%40。
我知道@是一个保留字符,但我仍然可以使用URL编码版本。唉,Wordpress并不希望它如此。
如何强制Wordpress尊重@符号?我猜我要么必须破解内部,要么做一些mod_rewrite魔法。
答案 0 :(得分: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;
}
接下来,尝试在网址中传递?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 :(得分:1)
我遇到了类似的问题,我能够将问题与SEO插件隔离开来。我确定插件为functions.php添加了一个过滤器,但由于插件没有被使用,卸载插件也解决了这个问题。
答案 2 :(得分:0)
我也有这个问题,但它不是由插件引起的。这是WordPress对您的站点URL进行301重定向的结果,该站点URL有或没有www。在它。
如果我的网站网址定义为http://www.mydomain.com
,那么这可以按预期工作:http://www.mydomain.com/?email=user@domain.com
如果用户以:http://mydomain.com/?email=user@domain.com
(注意:没有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/
答案 3 :(得分:-1)
当我尝试将Mailchimp数据传递到Wordpress中的Gravity Form时,我遇到了类似的问题。我找到了解决方案。最初的问题表明Wordpress也剥离了%40,但在这种情况下它对我来说并没有。
1)在Mailchimp中创建一个新的Merge标记。我打电话给我的电子邮件参数'和* | EMAIL2 | *
2)导出您的订阅者列表
3)复制普通电子邮件'列内容进入新的电子邮件参数'柱。
4)查找和替换所有@符号到%40
5)导入列表并勾选自动更新该列表的框
6)更新您的URL以包含新参数
* | EMAIL2 | *
这对我有用。