【问题标题】:Wordpress Plugin Problem with $_GET not returning value$_GET 不返回值的 Wordpress 插件问题
【发布时间】:2019-05-03 18:57:59
【问题描述】:

我正在为 wordpress 编写一个插件,该插件的第一步是将 cookie 设置为 url 参数 ?r= 的值(如果存在)。

public function init_query_params() {
        if(!isset($_GET['r'])) {
            return;
        }

        $cookie_name = 'waitlist_referrer_id';
        $cookie_value = $_GET['r'];
        setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
    }

问题是$_GET 是空的,即使参数确实存在。该参数在$_SERVER['REQUEST_URI'] 中可见,但在$_SERVER['QUERY_STRING'] 中不可见。

此问题仅在此特定客户端的 staging/prod 上持续存在,它适用于我的本地环境和另一个客户端 prod 环境。

目前,我只是从 REQUEST_URI 解析它,但很想帮助追查真正的问题。

【问题讨论】:

  • $_SERVER['QUERY_STRING'] 是否存在(有任何值)?
  • 这里是否涉及到 URL 重写?
  • 尝试使用 $_REQUEST['r'] 它包含所有 POST GET 和 COOKIE 的内容

标签: php wordpress query-parameters


【解决方案1】:

在您的插件或函数文件中添加以下代码。

function add_query_vars_cb($aVars) {
$aVars[] = "r";
return $aVars;
}
add_filter('query_vars', 'add_query_vars_cb');

然后在你想要获取查询字符串变量值的页面上,你应该打印这个对象

$objj = get_queried_object();
print_r($objj);

我认为你会得到价值。 谢谢。

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多