我正在尝试将电子邮件地址传递到 WordPress 页面,如下所示:
http://www.website.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c6f9a3aba7afaafba0a7ada3a3aba7afaa86bfa3a7aeb1aea9e8a5a9ab" rel="noreferrer noopener nofollow">[email protected]</a>
然而,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-”。
无论您的最终解决方案是什么,都不要破解核心以使其正常工作。 :)
关于wordpress - 如何防止 WordPress 从 URL 查询字符串中剥离 "at"符号 (@)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8049382/