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:自动更改 the_content 部分中的 URL