0

初めての質問者です。Web ページを作成していて、ユーザーが特定のページにアクセスした場合にページ上のテキストを変更したいと考えています。

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

4

1 に答える 1

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

これが役立つことを願っています....

于 2016-05-17T10:48:07.433 に答える