2017-03-16 61 views
0

我有一個WordPress網站,header.php要求每頁都有。在header.php上,我有一個表格供用戶選擇產品類別。在更改時,表單會將用戶重定向到我的服務器上的我的類別頁面category.php,但在瀏覽網站時顯示爲/類別。

在header.php中

<form method="POST" action="category" id="cateogry-filter-pick"> 
    <select class="selectpicker" id="category-filter" name="cat"> 
     <?php 
     $category_list = $wpdb->get_results("SELECT DISTINCT product_category FROM $table_name;"); 
     foreach($category_list as $key => $row): ?> 
      <option value="<?php echo str_replace(' ', '-', $row->product_category);?>"><?php echo $row->product_category;?></option> 
     <?php endforeach; ?> 
    </select> 
</form> 

上定製js.js

$(function(){ 
    $('#category-filter').on('change', function() { 
     this.form.submit(); 
    }); 
}); 

在category.php,我可以ASIGN類別的變量,然後循環顯示我所有的結果,使用:

$product_category = isset($_POST['cat']) ? $_POST['cat'] : null; 

在我的分類頁面,我也使用與AJAX/$ _GET一些分類過濾器,這將網址更改爲類似這樣:

/category/?sort=rating 

在這樣做時,我失去了送類別的價值從任何以前的$_POST

我最終想要做的是將我的網頁網址從/category更改爲/the-name-of-the-category/(即$_POST['cat']),並在使用我的排序過濾器時保留此值。然後我的網址將成爲類似:

www.mywebsite.com/shoes/?sort=rating 

什麼是這樣做的,考慮到我也想誰在他們的瀏覽器,如www.mywebsite.com/shoes鍵入一個URL來訪問同一頁面的用戶的最佳方法。

回答

0

(抱歉不好英語)

當你提交一個表單(提交按鈕或JavaScript),它會重定向到表單的動作(action="category")到:

url: www.mywebsite.com/category 

,如果你想被重定向到www.mywebsite.com/your-category你必須做,在category.php

$product_category = isset($_POST['cat']) ? $_POST['cat'] : null; 

if($product_category) 
{ 
    $url = "www.mywebsite.com/".$product_category; 
} 

,如果你想保留?sort=rating或其他$_GET瓦爾沒有失去你的一個類別,你必須附加到您的網址category.php

$url = "www.mywebsite.com/".$product_category."/?".$my_get_vars; 

其中$my_get_vars包含您以前的網址

的查詢一部分,但如果您的過濾器(查詢變量)來自ajax調用,您必須將您的ajax請求發送到當前url:www.mywebsite.com/selected-category而不是www.mywebsite.com/category.php以保留您選擇的類別。


希望得到這個幫助!

+0

請您詳細說明'if'條件下的內容。重定向可以自動嗎? – LaGuille

+0

對不起,在我完成之前發送回答,現在完成了。 –

+0

感謝您的回答,只是不太清楚我應該如何處理'$ url' – LaGuille