php 将 link 重定向到我网站上的随机页面的功能只能使用一次。我怎样才能让它每次都工作?

php function that redirects a link to a random page on my website only works once. How can I make it work every time?

首先,这不是我的代码,我得到了很多帮助才能达到这个阶段。我的问题是:随机重定向一次完美运行,如果您在网站上点击一段时间或清除浏览历史记录,它将再次运行。因此,就好像 rng 生成了一个随机页面一次,但随后记住了该页面,之后每次 link 都会返回它。

正如您将在下面看到的,link 转到一个名为“随机页面”的虚拟页面,然后重定向到网站上的一个随机页面(不包括第 5 行列出的一些页面)。问题似乎是 rng 的种子没有重置。我一直在和我的软件工程师邻居一起工作,我们尝试了各种方法,但没有任何效果。一方面,我们尝试将第 7 行的 array_rand 更改为 mt_rand,但这导致了“太多重定向”错误。

原代码是这样的:

add_action('template_redirect', 'wpsf_random_page_redirect');
function wpsf_random_page_redirect()
{
    if (is_page('random-page')) {
        $excluded_pages = array(125, 126, 508, 510, 723, 987, 995, 1079, 1109, 1121, 1135, 1146, 1159, 1177, 1188, 1418, 1433);
        $pages = get_pages(array('exclude' => $excluded_pages));
        $random_page = $pages[array_rand($pages)];
        $page_url = get_page_link($random_page);
        wp_redirect($page_url);
        exit;
    }
}

我们已经尝试添加第二个虚拟页面,添加 srand();进入代码或各种位置,例如虚拟页面元描述等。我们认为,我们最接近解决方案的尝试是将 array_rand 更改为 mt_rand 并获得太多重定向错误。

我浏览了整个网络但无法弄清楚(部分原因是所有这些对我来说大多是胡言乱语),但我的邻居似乎也不知道,他知道他在做什么。任何想法将不胜感激,谢谢!

这可能是一个缓存问题,所以尝试像这样添加 nocache_headers();

add_action('template_redirect', 'wpsf_random_page_redirect');
function wpsf_random_page_redirect()
{
    if (is_page('random-page')) {
        $excluded_pages = array(125, 126, 508, 510, 723, 987, 995, 1079, 1109, 1121, 1135, 1146, 1159, 1177, 1188, 1418, 1433);
        $pages = get_pages(array('exclude' => $excluded_pages));
        $random_page = $pages[array_rand($pages)];
        $page_url = get_page_link($random_page);
        nocache_headers();
        wp_redirect($page_url);
        exit;
    }
}