Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在wp/buddypress中显示用户上次访问的页面?_Php_Javascript_Jquery_Wordpress_Buddypress - Fatal编程技术网

Php 如何在wp/buddypress中显示用户上次访问的页面?

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()填充数组。这很

我试图弄清楚如何显示我的网站中有人访问过的最后3-5页左右的页面。我做了一些搜索,但我找不到一个这样做的WP插件,如果有人知道,请告诉我这个方向:)如果没有,我将不得不从头开始写,这就是我需要帮助的地方

我一直在努力理解DB及其工作原理。我假设这就是PHP的神奇之处,除非有使用cookies的javascript选项


我对所有想法都持开放态度: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的动态类型转换,很少需要手动操作