为什么WordPress会自动将带有参数“name=”的URL重定向到不同的页面?

时间:2019-11-25 作者:John McIntyre

如何禁用name变量的自动重定向,以便在呼叫预订登录页上使用它?

我正在此处设置电话预订页面:https://www.themcmethod.com/talk/

我想添加URL参数“name”和“email”,以便自动填充表单。

问题是,当我添加“name”参数时,WordPress假设我想重定向到包含该名称的页面。

例如

https://www.themcmethod.com/talk/[email protected] 可以重定向到呼叫预订页面,但如果添加名称字段,则会重定向到网站上最可能的页面。

因此https://www.themcmethod.com/talk/?name=John&[email protected] 重定向到我与约翰·卡尔顿的播客https://www.themcmethod.com/john-carlton-on-6-key-elements-of-powerful-profitable-email-marketing/

https://www.themcmethod.com/talk/?name=Mary&[email protected] 重定向到标题为“Mary”的灯箱弹出窗口。

如何禁用name变量的自动重定向?

我尝试过禁用所有插件,但没有成功。

我尝试过禁用WordPress的自动猜测功能,但也没有成功。

似乎有两个步骤。

WordPress接受name=并将其重定向到最可能的URL,因此name=John重定向到themcmethod。通信/约翰。

然后,另一个步骤开始了,如果使用CMMethod。com/john是404,wordpress会自动重定向到标题中有“john”的最可能的页面。

显然,猜测功能对SEO有好处,所以我不想(或需要)禁用它。我只想停止name=John重定向。

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

在WordPress中,name 是一个reserved term (重点矿山):

WordPress中有一整套保留关键字或术语should not be used in certain circumstances 因为它们可能与核心功能冲突。在以下情况下,应避免使用这些术语:

  • Passing a term through a $_GET or $_POST array index.php, 因此,每当您访问URL时,如https://example.com/post-name/, 你实际上正在加载https://example.com/index.php?name=post-name. 所以,如果您以某种方式更改了WordPress,从而无法使用name 参数,则会破坏所有的post permalinks。

    为了避免与WordPress冲突,您应该为参数选择其他内容,例如first_name, 或full_name.

SO网友:admcfajn

添加pre\\u get\\u posts筛选器。

如下所示:

function do_this_before_stuff( $the_query_object ) {
  if ( ! empty( $_GET[\'something\'] ) ) {
    $something = sanitize_key( $_GET[\'something\'] );
    $the_query_object->set( \'something\', $something );
  }
}
add_action( \'pre_get_posts\', \'do_this_before_stuff\' );
还有其他好地方可以放置操作/过滤器,但是pre_get_posts 是一个非常好的例子。