【问题标题】:Wordpress - keep a variable for all pages in memory from the urlWordpress - 从 url 为内存中的所有页面保留一个变量
【发布时间】:2020-12-12 22:20:15
【问题描述】:

我下载了一个推荐人插件,它工作正常我创建了我的自定义链接,一切都很好:

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中,写echo:

<?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;

但没有结果

【问题讨论】:

  • 是的,您可以使用会话存储。 php.net/manual/en/book.session.php
  • 为什么不为此使用会话?
  • @NicoHaase 我怎么能用 wordpress 做到这一点,我看到这样的事情看看我修改后的问题
  • 给定的代码有什么问题?你有什么努力让它发挥作用?
  • 您尝试过什么让它发挥作用?根据该代码示例,您只需在包含名为 wp-submit 的字段的 POST 请求上设置会话值,然后使用 GET 数组中存储的内容覆盖该会话变量 referrer 的每个先前包含的值,即使$_GET['r'] 的值没有设置为任何值

标签: php wordpress variables session


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 不幸的是它没有去,因为,检查我的问题,我已经更新了
  • 我已经更新了我的答案,希望它对你有用
猜你喜欢
  • 2017-01-09
  • 2013-01-04
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
相关资源
最近更新 更多