我试图弄清楚如何在我的网站中显示一个人访问过的最后3-5个页面。我做了一些搜索,我找不到这样做的WP插件,如果有人知道一个,请指向我那个方向:)如果没有,我将不得不从头开始写,那就是我在哪里我需要帮助。
我一直在努力了解数据库及其工作原理。我假设这是魔法将发生的地方,使用PHP,除非有一个使用cookie的javascript选项。
我对所有想法持开放态度:P&谢谢
答案 0 :(得分:3)
如果我要编写这样的插件,我会使用会话cookie通过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;
现在我已经对此进行了编码。可能存在语法错误或拼写错误。如果出现这样的错误,只需发出通知,我就会修改它。这个答案的目的主要是做出概念验证。你可以根据自己的喜好调整它。请注意,我假设session_start()已经在您的代码中。
希望它有所帮助。
===============
喂!对于迟到的回答感到抱歉,我出城了几天! :)
此插件将回答您对带LI标签的打印输出解决方案的请求
这就是我要做的事情:
print "<ol>";
foreach($_SESSION['history'] as $line) {
print "<li>".$line.</li>";
}
print "</ol>";
这很简单。你应该在这里阅读foreach循环:http://www.php.net/manual/en/control-structures.foreach.php
对于session_start();,在使用任何$ _SESSION变量之前将其放入。
希望它有所帮助! :)
答案 1 :(得分:0)
由于原始问题带有wordpress
标签,因此我将更新和翻译以上WordPress 5+的代码。请注意,您在任何地方都不需要session_start()
。
在这里,将下面的代码添加到singular.php
模板(或single.php
+ page.php
模板中,具体取决于您的需要):
/**
* Store last visited ID (WordPress ID)
*/
function so7035465_store_last_id() {
global $post;
$postId = $post->ID; // or get the post ID from your template
$historyMaxUrl = 3; // number of URLs in the history array
$history = (array) $_SESSION['history'];
array_unshift($history, $postId);
if (count($history) > $historyMaxUrl) {
array_pop($history);
}
$_SESSION['history'] = $history;
}
// Display latest viewed posts (or pages) wherever you want
echo '<ul>';
foreach ($_SESSION['history'] as $lastViewedId) {
echo '<li>' . get_permalink($lastViewedId) . '</li>';
}
echo '</ul>';
您还可以通过将so7035465_store_last_id()
函数放置在single-cpt.php
模板中来存储最新查看的自定义帖子类型(CPT)。
您也可以将其添加到钩子中或将其作为操作插入到模板中,但这不在此问题的范围内。