WordPress - Хранение URL в переходном процессе не является постоянным - PullRequest
0 голосов
/ 23 июня 2018

Мне нужно сохранить текущий URL-адрес в переходном режиме, чтобы я мог получить к нему доступ для последующего использования (когда мне нужно вернуться на эту страницу со страницы поиска).

Код:

if(!is_page_template('search.php')) {
    set_transient( 'last_url', $current_url, 60*60 );
}

Таким образом, этот код должен сохранять текущий URL текущей страницы, пока мы не окажемся на странице поиска.

Однако, как только я нажму на страницу поиска, 'last_url' станет domain.tld/поиск.Я понятия не имею, почему это происходит, когда у меня явно есть правило if(!is_page_template('search.php'))

Однако мое временное решение состоит в том, чтобы проверить, есть ли поиск по словам в URL, и если нет, то создать переходный процесс,как:

if(!is_page_template('search.php')) {
    if(stripos($current_url, 'search') === false) {
        set_transient( 'shop_last_url', $current_url, 60*60 );
    }
}

Хотя это решение работает, оно плохое, так как страница поиска имеет различный слаг - например, если есть несколько языков ...

Я также пытался использовать кукии сеансы без какой-либо удачи.

1 Ответ

0 голосов
/ 23 июня 2018

Если ваша тема не использует запросы WordPress по умолчанию ($ wp_query), то такие функции, как is_page_template, get_page_template_slug не будут работать должным образом.

Вы можете увидеть это в соответствующем коде ядра здесь .

Таким образом, для текущего случая вы можете использовать вместо этого глобальную переменную шаблона.

if (basename($GLOBALS["template"])=='search.php'){
 set_transient( 'last_url', $current_url, 60*60 );
}

или

if (basename(get_page_template())=='search.php'){
     set_transient( 'last_url', $current_url, 60*60 );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...