创建一个跳过特定页面的后退按钮

问题描述 投票:0回答:1

我需要添加一个返回 1 页的“后退”链接 (

history.go(-1)
),除非上一页是特定的 URL。在这种情况下,我希望链接返回 3 页 (
history.go(-3)
)。

我认为通过在 JS 中使用

document.referrer
或在 PHP 中使用
$_SERVER['HTTP_REFERER']
会很简单,但是在这两种方法中,引用 url 始终为空,所以显然这是行不通的。

我想跳过的引用网址末尾将包含以下参数:

?um_action=edit

例如,用户可能会采取以下路径:

  1. mysite.com/directory
  2. mysite.com/member/profile
  3. mysite.com/member/profile/?um_action=edit
  4. mysite.com/member/profile

如果您处于步骤 1、2 或 3,后退链接会将您带回到上一页。但如果你在第 4 步,我希望后退链接跳回第 1 步。

我怎样才能实现这个目标?这是一个 WordPress 网站,当保存配置文件时,我可以挂钩在上面的步骤 3 中运行的一个操作。我可以以某种方式使用这个吗?

谢谢!

javascript php wordpress
1个回答
0
投票

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]

© www.soinside.com 2019 - 2024. All rights reserved.