我正在尝试将电子邮件地址传递到 WordPress 页面,如下所示:
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 魔法。
来自 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-”。
无论您的最终解决方案是什么,都不要破解核心以使其正常工作。 :)
我遇到了类似的问题,我能够将问题隔离到 SEO 插件上。我确信该插件在functions.php中添加了一个过滤器,但由于该插件未被使用,卸载该插件也解决了该问题。
我也遇到这个问题,不过不是插件造成的。 这是 WordPress 对您的网站 URL 是否包含 www 进行 301 重定向的结果。在里面。
如果我的站点 URL 定义为
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/
您可以将 URL 地址中的
@
替换为 %40
。应该可以。
而不是
http://www.website.com/[email protected]
使用
http://www.website.com/?email=fakeemail%40yeahwho.com
然后,即使你将带有 @ 的原始 url 提供给某人,他们也应该能够使用它。
甚至Wordpress 的界面也被破坏了。当您更新用户并单击链接返回顶部的搜索结果时,您将转到删除了 @ 符号的链接。
我很久以前就打开了一份错误报告,但他们似乎更关心的是让我们很难寻求帮助,而不是在意识到问题时实际复制问题并修复它。
Wordpress 之前没有这个问题。它始于我原来的主题之前不久发布的更新。
任何人都可以帮忙,也许可以加入那里的对话,所以希望维护 Wordpress 的开发人员之一能够真正研究一下这个问题吗?也许他们认为我是一个有这个问题的单身疯子,如果他们没有看到其他人也寻求帮助,就不会费心提供帮助。
今天我在尝试将 Mailchimp 数据传递到 Wordpress 中的重力形式时遇到了类似的问题。我找到了解决方案。最初的问题指出,Wordpress 也剥离了 %40,但在这种情况下,它并没有适合我。
1) 在 Mailchimp 中创建一个新的合并标签。我将我的命名为“电子邮件参数”和 * |EMAIL2| *
2) 导出您的订阅者列表
3) 将普通的“电子邮件”列内容复制到新的“电子邮件参数”列中。
4) 对所有 @ 符号进行查找并替换为 %40
5) 导入您的列表并勾选自动更新该列表的框
6) 更新您的 URL 以包含新参数
* |电子邮件2| *
这对我有用。