Php 如何在wp/buddypress中显示用户上次访问的页面?
我试图弄清楚如何显示我的网站中有人访问过的最后3-5页左右的页面。我做了一些搜索,但我找不到一个这样做的WP插件,如果有人知道,请告诉我这个方向:)如果没有,我将不得不从头开始写,这就是我需要帮助的地方 我一直在努力理解DB及其工作原理。我假设这就是PHP的神奇之处,除非有使用cookies的javascript选项Php 如何在wp/buddypress中显示用户上次访问的页面?,php,javascript,jquery,wordpress,buddypress,Php,Javascript,Jquery,Wordpress,Buddypress,我试图弄清楚如何显示我的网站中有人访问过的最后3-5页左右的页面。我做了一些搜索,但我找不到一个这样做的WP插件,如果有人知道,请告诉我这个方向:)如果没有,我将不得不从头开始写,这就是我需要帮助的地方 我一直在努力理解DB及其工作原理。我假设这就是PHP的神奇之处,除非有使用cookies的javascript选项 我对所有想法都持开放态度:p&Thank you如果我要编写这样一个插件,我会使用会话cookies通过array\u unshift()和array\u pop()填充数组。这很
我对所有想法都持开放态度:p&Thank you如果我要编写这样一个插件,我会使用会话cookies通过array\u unshift()和array\u pop()填充数组。这很简单:
$server_url = "http://mydomain.com";
$current_url = $server_url.$_SERVER['PHP_SELF'];
$history_max_url = 5; // change to the number of urls in the history array
//Assign _SESSION array to variable, create one if empty ::: Thanks to Sold Out Activist for the explanation!
$history = (array) $_SESSION['history'];
//Add current url as the latest visit
array_unshift($history, $current_url);
//If history array is full, remove oldest entry
if (count($history) > $history_max_url) {
array_pop($history);
}
//update session variable
$_SESSION['history']=$history;
现在我已经在飞行中对其进行了编码。可能有语法错误或打字错误。如果出现这样的错误,只要贴一个通知,我会修改它。这个答案的目的主要是为了证明概念。你可以根据自己的喜好来调整。请注意,我假设session_start()已经在您的代码中
希望能有帮助
===============
嘿!很抱歉回答晚了,我出城有几天了!:)
此插件用于回答您的打印输出解决方案请求,该解决方案带有LI标签
下面是我要做的:
print "<ol>";
foreach($_SESSION['history'] as $line) {
print "<li>".$line.</li>";
}
print "</ol>";
print”“;
foreach($\会话['history']作为$行){
打印“”$行。 ”;
}
打印“”;
就这么简单。您应该在这里阅读foreach循环:
对于会话_start();,请将其放在使用任何$_会话变量之前
希望有帮助!:)如果我要编写这样一个插件,我会使用会话cookies通过array_unshift()和array_pop()填充数组。它将非常简单:
$server_url = "http://mydomain.com";
$current_url = $server_url.$_SERVER['PHP_SELF'];
$history_max_url = 5; // change to the number of urls in the history array
//Assign _SESSION array to variable, create one if empty ::: Thanks to Sold Out Activist for the explanation!
$history = (array) $_SESSION['history'];
//Add current url as the latest visit
array_unshift($history, $current_url);
//If history array is full, remove oldest entry
if (count($history) > $history_max_url) {
array_pop($history);
}
//update session variable
$_SESSION['history']=$history;
现在,我已经动态编写了此代码。可能存在语法错误或打字错误。如果出现此类错误,请发布通知,我将对其进行修改。此答案的目的主要是为了证明概念。您可以根据自己的喜好对其进行调整。请注意,我假设您的代码中已经包含会话_start()
希望能有帮助
===============
嘿!很抱歉回答晚了,我出城有几天了!:)
此插件用于回答您的打印输出解决方案请求,该解决方案带有LI标签
下面是我要做的:
print "<ol>";
foreach($_SESSION['history'] as $line) {
print "<li>".$line.</li>";
}
print "</ol>";
print”“;
foreach($\会话['history']作为$行){
打印“”$行。 ”;
}
打印“”;
就这么简单。您应该在此处阅读foreach循环:
至于会话_start();,在使用任何$\u会话变量之前放置它
希望有帮助!:) 我将为WordPress 5+更新并翻译上面的代码,因为原始问题带有
WordPress
标签。请注意,您不需要在任何地方使用session\u start()
接下来,将下面的代码添加到singular.php
模板(或single.php
+page.php
模板,具体取决于您的需要):
/**
*存储上次访问的ID(WordPress ID)
*/
函数so7035465_store_last_id(){
全球$员额;
$postId=$post->ID;//或从模板中获取帖子ID
$historyMaxUrl=3;//历史数组中的URL数
$history=(数组)$\会话['history'];
数组_unshift($history,$posted);
如果(计数($history)>$historyMaxUrl){
数组_pop($history);
}
$\会话['history']=$history;
}
//随时随地显示最新查看的帖子(或页面)
回声“”;
foreach($\会话['history']作为$lastViewedId){
回显“- ”。获取永久链接($lastViewedId)。“
”;
}
回声“
”;
您还可以通过将so7035465_store_last_id()
函数放置在single CPT.php
模板中来存储最新查看的自定义帖子类型(CPT)
您也可以将其添加到钩子或作为操作注入模板中,但这超出了此问题的范围。我将更新并翻译WordPress 5+的上述代码,因为原始问题带有
WordPress
标记。请注意,您不需要在任何地方使用session\u start()
接下来,将下面的代码添加到singular.php
模板(或single.php
+page.php
模板,具体取决于您的需要):
/**
*存储上次访问的ID(WordPress ID)
*/
函数so7035465_store_last_id(){
全球$员额;
$postId=$post->ID;//或从模板中获取帖子ID
$historyMaxUrl=3;//历史数组中的URL数
$history=(数组)$\会话['history'];
数组_unshift($history,$posted);
如果(计数($history)>$historyMaxUrl){
数组_pop($history);
}
$\会话['history']=$history;
}
//随时随地显示最新查看的帖子(或页面)
回声“”;
foreach($\会话['history']作为$lastViewedId){
回显“- ”。获取永久链接($lastViewedId)。“
”;
}
回声“
”;
您还可以通过将so7035465_store_last_id()
函数放置在single CPT.php
模板中来存储最新查看的自定义帖子类型(CPT)
您也可以将其添加到钩子中或作为操作注入模板中,但这超出了本问题的范围。您是否检查过这个->您是否检查过这个->没有人记得PHP的动态变量。“$history=(array)$_SESSION['history'];”跳过所有“if(count)”jazz.PHP根据其内容自动键入变量,而不管它以前是什么。$test=1变为数字,$test=“string”现在是字符串。您可以帮助进行类型转换。$test=(string)1将是字符串。$history=(array)$_SESSION['history'];”将会话变量强制转换为数组,如果是空的,PHP只会创建一个空数组。我知道我们可以用array()声明数组,但从来没有遇到过(array)语法。非常清楚的解释,朋友!非常感谢!由于PHP的动态类型转换,很少需要手动操作