2016-05-17 5 views
0

初めて質問質問者がここにあります。私はWebページを構築しており、ユーザーが特定のページを訪問した場合、ページ上のテキストを変更したいと考えています。訪問したURLに基​​づいてワードプレスセッションをパーソナライズ

私の最初のアイデアは、訪問先のURLを$_SERVER['REQUEST_URI']のように記録するセッションの配列も作成していました。これは、最初から構築していたサイトであればおそらく動作します。しかし、...サイトはWordpressで構築されているので、私はそのシステム内でそれを行う方法について100%ではありません。

+0

そうでもない、それは主に意見をベースとどのように」上にあるように適し質問これは非常に広い質問でもあります。 – Epodax

+1

@エパダックス、これはどういう意見ですか?彼はそれがどのようにワードプレスで実装されるべきかを尋ねているだけです。 – SZenC

+1

@SZenC OPが望んでいることを実行する方法は複数ある可能性が最も高いので、それぞれの人が特定のことをどのようにして好きにするかが沸騰します。しかし、たとえそれを無視したとしても、それはまだ広範であり、どのように "どのように"どのようなことを話しているのですか。 – 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のすべてのページがこのページを読み込むためです(別の方法で構成されている場合を除く)。

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

    ?> 

もう一つ: - そのファイルの非常に、非常に上部に 私は1行目に意味は、これを行います! $ _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

関連する問題