繁体   English   中英

将链接重定向到我网站上的随机页面的 php 函数只能工作一次。 我怎样才能让它每次都工作?

[英]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 生成了一个随机页面,但之后每次都会记住该页面并链接回该页面。

正如您将在下面看到的,一个链接转到一个名为“随机页面”的虚拟页面,然后该页面重定向到该站点上的一个随机页面(不包括第 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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM