WP v-5.5 $_GET 参数在我的插件中不起作用

WP v-5.5 $_GET parameter does not work in my plugin

我开发了一个wordpress插件。在我的插件中,我通过 (http://example.com/client-portal/?page=dashboard) 等获取参数来管理所有页面,它一直工作到 wordpress 版本 5.4

但新版本的 wordpress 5.5 版会自动将 http://example.com/client-portal/?page=dashboard 重定向到 http://example.com/client-portal/。获取参数自动消失

我已经通过这种方式添加了简码-

//page short code for user page
add_shortcode( 'ccgclient_portal', array($this,'ccgclient_portal_shortcode_func') );

这是我的简码函数-

function ccgclient_portal_shortcode_func()
{
    ob_start();
    include_once 'pages/user/index.php';
    return ob_get_clean();
}

并通过-

捕获获取参数
if(isset($_GET['page']) && $_GET['page'] == 'dashboard'){
     include_once 'dashboard.php';
}

不知道新版wordpress(5.5)有什么问题

你能帮帮我吗?

提前致谢。

我认为您的问题出在 'page' 键上,这是一个 post 类型的 slug,它在这个版本中与 WP 产生了冲突。这与配置永久链接以使用 '?post=98979' 或类似格式相同。 我的建议是尝试使用不同的获取密钥,看看会发生什么。

告诉我你得到了什么。

我的插件也有同样的问题。 我的问题不是使用新密钥。我的客户在这里定义了“页面”。它是关于世界上所有旧链接。

我的情况是这样解决的:

add_action( 'parse_request', 'ai_parse_request', 1);

并在

function ai_parse_request( $query ) { 
    unset( $query->query_vars['page']); 
    return $query;
}

我从 $query 中删除了“page”参数以避免 301 重定向。

我已将此“解决方法”设置为可配置,因为页面参数实际上用于博客中的分页。在你的情况下,你应该只在例如该参数不是数字,以确保您不会破坏全局分页!