【发布时间】:2013-10-15 02:11:22
【问题描述】:
我已经建立了一个site,它为他们服务的每个区域都有一个主页。在 Chrome 和 Safari 中,如果您转到服务区域选项卡并选择一个服务区域,您将被带到该区域的主页。
此时会话开始存储用户选择的区域,如果他们访问网站上的另一个页面,现在它会在该选定位置的标题中显示一个特定于位置的广告,或者如果他们选择主页,它会将他们重定向到他们的选定区域主页。
Firefox 中的问题是,如果您选择一个服务区域并被带到该区域的主页,然后从菜单中选择不同的页面,则设置的服务区域会更改为不同的区域。仅当将自定义主页离开到不同的菜单页面时才会发生这种情况。
这是设置会话的代码:
session_start();
$cur_url = dd_cur_page_url();
if ('local_home_pages' == get_post_type() && $cur_url != $_SESSION['dd_location']['home']) {
$cur_url_mod = str_replace('carpet-cleaning_', '', $cur_url);
$url_parts = explode('/', $cur_url_mod);
$url_parts_count = count($url_parts);
$cur_page = $url_parts[$url_parts_count - 2];
$location_parts = explode('_', $cur_page);
$place = trim(str_replace('-', ' ', $location_parts[0]));
$state = trim(str_replace('-', ' ', substr($location_parts[1], 2)));
$state_parts = explode('-', $location_parts[1]);
$state_abv = trim($state_parts[0]);
$county = trim(str_replace('-', ' ', $location_parts[2]));
$_SESSION['dd_location'] = array(
'home' => $cur_url,
'place' => $place,
'state' => $state,
'state_abv' => $state_abv,
'county' => $county);
}
这是只在通用主页上运行的重定向代码:
session_start();
$cur_url = dd_cur_page_url();
if (is_front_page() && isset($_SESSION['dd_location']['home'])) {
$location = $_SESSION['dd_location']['home'];
header('Location:' . $location);
}
【问题讨论】:
-
我们能看到 get_post_type() 和 is_front_page() 函数吗?您还可以为两个页面都包含 $_SESSION 的 var_dump 吗?
-
它们内置于 wordpress 功能中。 is_front_page 如果是站点主页,则返回 true。如果是这种情况,用户将被重定向到他们选择的区域主页。 get_post_type 返回页面的帖子类型。如果它是 local_home_pages 的帖子类型,并且它是与会话中设置的页面不同的本地主页,则会话信息会被更新,如果它是相同的,它将单独离开会话。
-
我将在标题中添加一个 var 转储,直到找到解决方案。
-
你试过CTRL+f5了吗??
标签: php wordpress firefox session-variables