Персонализация сеансов WordPress на основе посещенных URL

Первый раз задайте вопрос здесь. Я создаю веб-страницу и хочу изменить текст на странице, если пользователь посетил определенные страницы.

Моей первоначальной идеей было создать в сеансе массив, в котором каждый URL-адрес записывается как посещенный $_SERVER['REQUEST_URI']что, вероятно, сработало бы, если бы это был сайт, который я создавал с нуля. однако … Поскольку сайт построен на WordPress, я не на 100% уверен, как делать это в своей системе.

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 [‘visitPages’]?

Теперь для каждого файла, например (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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]