2017-03-16 112 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