Wordpress - 从 url 为内存中的所有页面保留一个变量

Posted

技术标签:

【中文标题】Wordpress - 从 url 为内存中的所有页面保留一个变量【英文标题】:Wordpress - keep a variable for all pages in memory from the 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'] 的值没有设置为任何值 【参考方案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'];
    

【讨论】:

不幸的是它没有去,因为,检查我的问题,我已经更新了 我已经更新了我的答案,希望它对你有用

以上是关于Wordpress - 从 url 为内存中的所有页面保留一个变量的主要内容,如果未能解决你的问题,请参考以下文章

从 WordPress 中的 URL 中提取参数

在 Wordpress 中替换 URL

如何在 wordpress 视觉作曲家中搜索替换图像 url

Wordpress:自动更改 the_content 部分中的 URL

sql Wordpress在迁移时重定向到旧站点。从数据库更新旧URL的所有发生。

从 iis7 中的 wordpress URL 中删除 index.php