WordPress-为网址中的所有页面保留一个变量

问题描述

我下载了引荐来源网址插件,并且工作正常,创建了自定义链接,一切都很好:

https://testsite.com/?r=ty5x

我有一个转换系统,可以通过自定义链接告诉我有多少用户访问我的网站

如果您想在显示屏上看到与自定义链接关联的变量,只需执行以下操作:

<?PHP
if (isset($_GET['r'])) {
    echo $_GET['r'];
}
?>

问题出在哪里,如果用户更改页面并返回首页,显然url更改了,那么如何在用户的整个浏览过程中将变量r =保留在内存中

更新$ _SESSION

如果在functions.PHP中,我编写代码

if (!session_id()) {
    session_start();
    $_SESSION['referrer']=$_GET['r'];

}

在front-page.PHP中,写回显:

<?PHP
$username=$_SESSION['referrer'];
echo $username;
?>

这很完美,但是即使我激活了session_start,只要更改页面,该变量就不会显示

第二页示例:

session_start();

$test = $_SESSION['referrer'];

echo $test;

在此示例下,我还尝试输入$ _SESSION:

function test() {
    global $hello;
    $hello = 'hello world';
}
add_action( 'after_setup_theme','test' );

并回显:

global $hello;
echo $hello;

但没有结果

解决方法

抱歉,回复晚了。在尝试实现您的代码之后,我认为您的问题是由于function.php中的这段代码引起的。

if (!session_id()) {
session_start();
$_SESSION['referrer']=$_GET['r'];}

由于function.php将在每个页面上加载,因此当它位于首页并且在$_GET['r']中有值时,它可以完美运行。但是,当您加载到第二页时,$_GET['r']的值为空,并且会覆盖$_SESSION['referrer']

最简单的解决方案是在启动$ _SESSION ['referrer']之前检查条件。

if (!session_id()) {
    session_start();
    if($_GET['r']){
        $_SESSION['referrer']=$_GET['r'];
    }
}