如何防止 WordPress 从 URL 查询字符串中删除“at”符号 (@)?

问题描述 投票:0回答:6

我正在尝试将电子邮件地址传递到 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 魔法。

wordpress mod-rewrite query-string special-characters url-encoding
6个回答
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-”。

无论您的最终解决方案是什么,都不要破解核心以使其正常工作。 :)


2
投票

我遇到了类似的问题,我能够将问题隔离到 SEO 插件上。我确信该插件在functions.php中添加了一个过滤器,但由于该插件未被使用,卸载该插件也解决了该问题。


0
投票

我也遇到这个问题,不过不是插件造成的。 这是 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/


0
投票

您可以将 URL 地址中的

@
替换为
%40
。应该可以。

而不是

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

使用

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

然后,即使你将带有 @ 的原始 url 提供给某人,他们也应该能够使用它。


0
投票

甚至Wordpress 的界面也被破坏了。当您更新用户并单击链接返回顶部的搜索结果时,您将转到删除了 @ 符号的链接。

我很久以前就打开了一份错误报告,但他们似乎更关心的是让我们很难寻求帮助,而不是在意识到问题时实际复制问题并修复它。

https://wordpress.org/support/topic/symbol-removed-from-url-when-returning-to-user-list/#post-18130287

Wordpress 之前没有这个问题。它始于我原来的主题之前不久发布的更新。

任何人都可以帮忙,也许可以加入那里的对话,所以希望维护 Wordpress 的开发人员之一能够真正研究一下这个问题吗?也许他们认为我是一个有这个问题的单身疯子,如果他们没有看到其他人也寻求帮助,就不会费心提供帮助。


-1
投票

今天我在尝试将 Mailchimp 数据传递到 Wordpress 中的重力形式时遇到了类似的问题。我找到了解决方案。最初的问题指出,Wordpress 也剥离了 %40,但在这种情况下,它并没有适合我。

1) 在 Mailchimp 中创建一个新的合并标签。我将我的命名为“电子邮件参数”和 * |EMAIL2| *

2) 导出您的订阅者列表

3) 将普通的“电子邮件”列内容复制到新的“电子邮件参数”列中。

4) 对所有 @ 符号进行查找并替换为 %40

5) 导入您的列表并勾选自动更新该列表的框

6) 更新您的 URL 以包含新参数 * |电子邮件2| *

这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.