2016-05-17 151 views
0

第一次在这里提问问题。如果用户访问过某些页面,我正在构建一个网页并希望更改页面上的文本。根据访问的网址个性化Wordpress会话

我最初的想法是在会话中创建一个数组,将每个url记录为其像0123,这样的东西,如果这是我从头开始构建的网站,则该数组可能会工作。但是...因为该网站是建立在WordPress的我不是100%如何去做那里系统内。

+0

” d解决这个问题也是一个非常广泛的问题。 – Epodax

+1

@Epodax,这是基于意见的?他只是问如何在wordpress中实施它。 – SZenC

+1

@SZenC因为最有可能有多种方式来做OP想要的东西,而且这将归结为每个人如何喜欢做某些事情。但即使我们忽略了这一点,它仍然是一个广泛的问题/问我们“如何”质疑是否是SO的主题。 – Epodax

回答

0

现在,这是我建议你做的。导航到你的主题并打开文件functions.php 然后找到一个合适的地方在文件的任何地方(该文件的底部不会那么奇怪)。 然后,添加以下功能:

<?php 

     // FILE-NAME: functions.php <== LOCATED AT THE ___/wp-content/themes/your-theme-name 
     add_action("init", "initiatePageLogging"); 

     function initiatePageLogging(){ 
      // START THE SESSION IF IT HAS NOT BEEN STARTED 
      // THIS WOULD BE USED TO SHARE DATA ACROSS YOUR PAGES... 
      if (session_status() == PHP_SESSION_NONE || session_id() == '') { 
       session_start(); 
      } 

      // CHECK THAT THE SESSION VARIABLE FOR OUR PAGE-LOGGING IS THERE 
      // IF NOT CREATE IT 
      if(!isset($_SESSION['visitedPages'])){ 
       // IT DOES NOT EXIST SO WE CREATE IT & INITIALIZE IT AS AN EMPTY ARRAY 
       $_SESSION['visitedPages'] = array(); 
      } 
      // NO NEED TO KEEP THE SESSION ARRAY $_SESSION['visitedPages'] TOO LONG 
      // SO WE TRIM IT OUT CONDITIONALLY TO KEEP IT UNDER CHECK 
      if(count($_SESSION['visitedPages']) >= 10){ 
       // WE REMOVE ABOUT 7 ELEMENTS FROM THE BEGINNING OF THE ARRAY 
       // LEAVING JUST THE LAST 3 - NOW THAT'S COOL... 
       $arrVisitedPages   = $_SESSION['visitedPages']; 
       array_splice($arrVisitedPages, 0, 7); 
       // RE-DEFINE THE $_SESSION['visitedPages'] ARRAY 
       $_SESSION['visitedPages'] = $arrVisitedPages; 
      } 
     } 

     function getLastVisitedPage(){ 
      $lastVisitedPage  = get_site_url() . $_SERVER['REQUEST_URI'];  //<== FALL BACK TO THE CURRENT PAGE IF WE HAVE AN ISSUE. 
      if(isset($_SESSION['visitedPages']) && is_array($_SESSION['visitedPages'])){ 
       $arrVP    = $_SESSION['visitedPages']; 
       $intArrVPLength  = count($arrVP); 
       $diff    = ($intArrVPLength - 2); 
       $lastVisitedPage = ($intArrVPLength > 1) ? $arrVP[$diff] : $lastVisitedPage; 
      } 
      return $lastVisitedPage; 
     } 

    ?> 

现在,第1部分完成了!在你的主题里面,你仍然可以找到一个叫做的文件。header.php 这是我们必须进行日志记录的地方,因为默认情况下Word-Press中的每个页面都会加载这个页面(除非另有配置)。 在非常,非常顶部该文件的 - 我的意思是1号线,这样做:

<?php 
     // FILE-NAME: header.php <== LOCATED AT THE ___/wp-content/themes/your-theme-name 

     // BUILD THE URL OF THE CURRENT PAGE & PUSH IT TO THE SESSION VARIABLE... 
     $thisPage     = get_site_url() . $_SERVER['REQUEST_URI']; 
     $_SESSION['visitedPages'][] = $thisPage; 

     // THAT'S ALL! BELOW HERE, THE ORIGINAL CONTENT OF THE header.php FILE CONTINUES... 

    ?> 

一件事!我们现在如何使用$ _SESSION ['visitedPages']变量? 否则,我们如何知道使用$ _SESSION ['visitedPages']变量最后一次访问哪个页面?

现在在每个文件如(page.php,index.php,category.php,taxonomy.php等);您现在可以通过做这样的事情找出最后访问的网页:

<?php 

     // FILE-NAME: ANY FILE IN THE THEME LIKE: page.php, index.php, category.php, taxonomy.php, etc 
     $lastVisitedPage  = getLastVisitedPage(); 
     // THAT'S IT, PAL... 
    ?> 

我希望这有助于....确实不适合这么一个问题,因为它主要是基于认为你如何

+0

干杯,这正是我需要的东西。 – CavemanDan