我需要添加一个返回 1 页的“后退”链接 (
history.go(-1)
),除非上一页是特定的 URL。在这种情况下,我希望链接返回 3 页 (history.go(-3)
)。
我认为通过在 JS 中使用
document.referrer
或在 PHP 中使用 $_SERVER['HTTP_REFERER']
会很简单,但是在这两种方法中,引用 url 始终为空,所以显然这是行不通的。
我想跳过的引用网址末尾将包含以下参数:
?um_action=edit
例如,用户可能会采取以下路径:
如果您处于步骤 1、2 或 3,后退链接会将您带回到上一页。但如果你在第 4 步,我希望后退链接跳回第 1 步。
我怎样才能实现这个目标?这是一个 WordPress 网站,当保存配置文件时,我可以挂钩在上面的步骤 3 中运行的一个操作。我可以以某种方式使用这个吗?
谢谢!
1 您看到 $_SERVER['HTTP_REFERER'] 的空白结果可能是因为您在 url 中手动输入,如果您单击带有 ?um_action=edit 的链接,$_SERVER['HTTP_REFERER'] 应该可以正常工作。
2 如何通过步骤创建反向链接。
您只需使用 SESSIONS 即可做到这一点。您需要在会话中保存所有 URL HTTP_REFERER,然后您可以返回到步骤 1。以下是如何完成此操作的示例。将代码添加到functions.php到模板中。
到functions.php顶部
add_action('init', 'myStartSession', 1);
function myStartSession() {
if(!session_id()) {
session_start();
}
}
add_action('wp_logout', 'myEndSession');
add_action('wp_login', 'myEndSession');
function myEndSession() {
session_destroy ();
}
反向链接脚本代码(添加到文件functions.php底部)
add_shortcode( 'bl', 'backlink');
function backlink() {
$prevurl = $_SERVER['HTTP_REFERER'];
$thisurl = $_SERVER['REQUEST_URI'];
if (!isset($_SESSION['steps'])) {
session_start();
$_SESSION['steps'] = array();
$steps = $_SESSION['steps'];
} else if (!strstr($prevurl, $thisurl)) {
array_push($_SESSION['steps'], $prevurl );
$steps = $_SESSION['steps'];
} else {
$steps = $_SESSION['steps'];
}
if (strstr($prevurl, $thisurl)) {
$arraycount = count($steps);
$getkey = $arraycount - 1;
$backlink = $_SESSION['steps'][$getkey];
} else if (strstr($prevurl, '?um_action=edit')) {
$arraycount = count($steps);
$getkey = $arraycount - 3;
$backlink = $_SESSION['steps'][$getkey];
} else if (!strstr($prevurl, '?um_action=edit') AND !strstr($thisurl, '?um_action=edit')) {
$backlink = $prevurl;
} else if (strstr($thisurl, '?um_action=edit')) {
$arraycount = count($steps);
$getkey = $arraycount - 1;
$backlink = $_SESSION['steps'][$getkey];
}
echo "<a href='$backlink'>BACK LINK</a>";
}
将生成的简码添加到管理面板中您需要的页面。
[bl]