问题描述
我下载了引荐来源网址插件,并且工作正常,创建了自定义链接,一切都很好:
我有一个转换系统,可以通过自定义链接告诉我有多少用户访问我的网站
如果您想在显示屏上看到与自定义链接关联的变量,只需执行以下操作:
<?PHP
if (isset($_GET['r'])) {
echo $_GET['r'];
}
?>
问题出在哪里,如果用户更改页面并返回首页,显然url更改了,那么如何在用户的整个浏览过程中将变量r =保留在内存中
更新$ _SESSION
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'];
}
}