使用添加_重写_规则时,获取url参数不再起作用

时间:2020-04-03 作者:bdk

我正在使用WordPress admin创建一个页面(名为get-region-page), 其中,Pod短代码用于检索URL参数。例如:

[pods name="region" slug="{@get.regionparam}" field="region_name"]
将301重定向到URL/get-region-page&regionparam=$region_slug, Pod短代码工作正常。

当我需要在中为该页创建重写规则时,问题就出现了functions.php (带1234 是的页面IDget-region-page):

add_rewrite_rule(\'({some-custom-regex})/?$\',\'index.php?page_id=1234&regionparam=$matches[1]\',\'top\');
。。。参数变为null. 我无法再检索URL参数。但如果我在页面的WordPress模板中尝试此PHP代码,参数仍然存在:

echo get_query_var(\'regionparam\');
备注,此选项在PHP模板中也不起作用:

echo $_GET[\'regionparam\'];
所以我想知道是否有一些等效的Pod短代码get_query_var(\'regionparam\') 让我的第一个Pod短代码再次工作?

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

我找到了解决办法,而不是解决我的问题。仍然可以使用以下方法检索url参数$GLOBALS[ ‘any’ ] 感谢本文档:https://docs.pods.io/displaying-pods/magic-tags/special-magic-tags/.所以不用$_GET[\'any\']与我之前的短代码一样:

[pods name="region" slug="{@get.regionparam}" field="region_name"]
我只是用$GLOBALS:

[pods name="region" slug="{@globals.regionparam}" field="region_name"]
为了参数regionparam 要作为全局可用,我需要将此筛选器添加到functions.php:

add_filter("query_vars", function( $vars ){
    $vars[] = "regionparam";
    $vars[] .= "otherParamsIfNeeded";
    return $vars;
});
在其他函数中,我替换旧的$_GET[\'regionparam\'] 通过get_query_var(\'regionparam\').

SO网友:bdk

我不知道为什么我的问题格式不好,无法修改。以下是更具可读性的:

我正在使用WP Admin DIVI builder创建一个页面(名为get region page),其中Pod快捷方式用于检索url参数。例如:

[pods name="region" slug="{@get.regionparam}" field="region_name"]
这显然与在页面的php模板中使用这些选项的结果相同:

$_GET[\'regionparam\']
将301重定向到该页面url:get-region页面(&;regionparam=$region\\u slug,一切正常,我可以检索url参数。当我将301重定向替换为中该页的重写规则时,问题就出现了functions.php (使用1234获取区域页面的页面id):

add_rewrite_rule(\'({some-custom-regex})/?$\',\'index.php?page_id=1234&regionparam=$matches[1]\',\'top\');
。。。参数regionparam 变为空。只有这样才能工作:

get_query_var(\'regionparam\');
但不再是这个

$_GET[\'regionparam\'];
因此,我想知道是否有任何方法可以检索get\\u query\\u var(\'regionparam\')作为我在DIVI builder中再次修改的第一个pod快捷方式?谢谢你的帮助!

相关推荐