2014-02-26 61 views
0

我正在尝试创建一个“返回搜索结果”链接,以便返回上一页。Wordpress PHP返回搜索结果

基本上,您可以执行搜索,然后进入单一页面。在这个页面中,我想创建链接。

我想: <?php $url = htmlspecialchars($_SERVER['HTTP_REFERER']); echo "<a href='$url'>back</a>"; ?>

,但只送你回以前的页面(让我们说有其他人从谷歌的网站...然后会带他回Google我想)

任何想法?

谢谢!

+0

有一件事要记住这样的链接(这是不同的每个人)是,你将失去使用W3 Total Cache或WP Super Cache之类的功能进行整页缓存的能力。如果性能/扩展是您网站的关注点,那么您应该考虑这个链接的重要性,或者考虑到这一点,构建您的解决方案。 –

+0

为什么不呢?我只需要以某种方式存储url,然后在单个帖子页面上将其回显为否? – tlt2w

回答

0

最后我管理一个$_SESSION变量来做到这一点:

在点击搜索后(通常archive.php或类似)我加了脚注在此之前的代码,加载网页:

  <?php 
      if (isset($_SERVER["REQUEST_URI"])) { 
      $_SESSION['url'] = $_SERVER["REQUEST_URI"]; 
      } 
      ?> 

然后,我加入到单页的代码波纹管:

<div class="back-to-search"> 
    <?php if (isset($_SESSION['url'])) : ?> 
     <a href="<?php echo $_SESSION['url']; ?>">Back To Search</a> 
    <?php else: ?>  
     <a href="<?php echo get_home_url(); ?>">Back To Search</a> 
    <?php endif;?> 
</div> 

所以基本上如果$_SESSION从搜索结果集,它需要你回到结果。如果没有(例如,如果你直接从谷歌等链接)链接将重定向到首页(所有列表默认情况下出现)

+0

您可能想要在使用之后取消设置会话变量,否则在用户浏览到单个页面时仍会设置该变量 - 来自不同推荐人的信息页。 – MarcGuay

0

'HTTP_REFERER' 将用户代理引用到当前页面的页面地址(如果有)。这由用户代理设置。并非所有的用户代理都会设置它,有些提供了将HTTP_REFERER修改为功能的功能。总之,它不能真正被信任。

来源:http://www.php.net/manual/en/reserved.variables.server.php

所以,你应该想到另一种方式来重新创建URL。尝试使用您正在执行的搜索将该URL作为POST变量发送。然后你可以简单地从$_POST中读取它。

+0

感谢您的回答。如何在两个不同的页面上使用'$ _POST'变量? (包含搜索结果的页面应该被存储,但是单个页面应该有链接) – tlt2w