WordPress-在瞬态中存储URL不是恒定的

时间:2018-06-23 12:20:38

标签: wordpress wordpress-theming

我需要以临时方式存储当前URL,以便可以稍后使用(当我需要从搜索页面链接回该页面时)。

代码:

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

因此该代码应保存当前页面的当前URL,直到我们进入搜索页面为止。

但是,一旦我单击搜索页面,'last_url'将变为domain.tld / search。我不知道为什么在我明确拥有规则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 );
    }
}

虽然此解决方案有效,但它是不好的解决方案,因为搜索页面具有不同的特性-例如,如果有多种语言...

我也尝试过使用cookie和会话,但没有任何运气。

1 个答案:

答案 0 :(得分:0)

如果您的主题未使用默认的WordPress查询($ wp_query),则is_page_template,get_page_template_slug等功能将无法正常工作。

您可以在相应的核心代码here中看到它。

因此,在当前情况下,您可以改为使用全局模板变量。

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