2014-02-26 137 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