2016-05-17 3 views
0

première fois Posez la question ici. Je construis une page Web et je veux changer le texte sur la page si l'utilisateur a visité certaines pages.Personnaliser des sessions Wordpress basées sur les URL visitées

Mon idée initiale était aussi de créer un tableau dans la session qui enregistre chaque URL comme visitée avec quelque chose comme $_SERVER['REQUEST_URI'], ce qui fonctionnerait probablement si c'était un site que je construisais à partir de zéro. cependant ... Parce que le site est construit dans Wordpress, je ne suis pas à 100% comment s'y prendre dans ce système.

+0

Pas vraiment une question adaptée pour SO car il est principalement basé avis sur la façon dont vous » d approche cela, aussi une question très large. – Epodax

+1

@Epodax, comment est-ce basé sur l'opinion? Il demande simplement comment il devrait être implémenté dans wordpress. – SZenC

+1

@SZenC Parce qu'il y a probablement plusieurs façons de faire ce que l'OP veut, et cela se résume à la façon dont chaque personne préfère faire certaines choses. Mais même si nous avons ignoré cela, c'est toujours un large/nous demandant "comment" la question qui est hors sujet pour SO. – Epodax

Répondre

0

Maintenant, voici ce que je vous suggère de faire. Accédez à votre thème et ouvrez le fichier functions.php Puis trouver un endroit approprié n'importe où sur le fichier (Le bas du fichier ne serait pas étrange). Ensuite, ajoutez les fonctions suivantes:

<?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; 
     } 

    ?> 

Maintenant, la partie 1 est fait! À l'intérieur de votre thème, vous trouverez toujours un fichier appelé header.php C'est ici que nous devons effectuer la journalisation car par défaut, chaque page de Word-Press charge cette page (sauf si configuré autrement). Au très, très haut de ce fichier - je veux dire sur la ligne 1, faites ceci:

<?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... 

    ?> 

Une chose! Comment utilisons-nous maintenant le $ _SESSION ['visitedPages'] Variable? Sinon, comment pouvons-nous savoir quelle page a été visitée en utilisant la variable $ _SESSION ['visitedPagesPages']?

Maintenant sur tous les fichiers comme (page.php, index.php, category.php, taxonomy.php, etc); vous pouvez maintenant trouver la dernière page visitée en faisant quelque chose comme ceci:

<?php 

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

J'espère que cette aide ....

+0

Acclamations c'est exactement le genre de chose dont j'avais besoin. – CavemanDan