我有一个WordPress网站,每个页面都有header.php
。在header.php
上,我有一个表单,用户可以在其中选择产品类别。在更改时,表单会将用户重定向到我的类别页面,该页面在我的服务器上为category.php
,但在浏览网站时显示为/ category。
关于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>
Custom-js.js 上的
在category.php 上,我可以将类别设置为变量,然后循环显示我的所有结果,使用: 在我的类别页面上,我还使用了一些带有AJAX / $ _GET的排序过滤器,它会将URL更改为以下内容: 执行此操作时,我会丢失之前任何 我最终想要做的是将我的网页网址从 这样做的最佳方法是什么,考虑到我还希望在浏览器中键入URL的用户(例如$(function(){
$('#category-filter').on('change', function() {
this.form.submit();
});
});
$product_category = isset($_POST['cat']) ? $_POST['cat'] : null;
/category/?sort=rating
$_POST
发送的类别的值。/category
更改为/the-name-of-the-category/
($_POST['cat']
),并在使用排序过滤器时保留此值。我的网址将变为:www.mywebsite.com/shoes/?sort=rating
www.mywebsite.com/shoes
)访问同一页面。
答案 0 :(得分: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
vars而不丢失以前的类别,则必须在 category.php 中附加到您的网址:
$url = "www.mywebsite.com/".$product_category."/?".$my_get_vars;
其中$my_get_vars
包含您之前网址的查询部分
但是,如果您的过滤器(查询变量)来自ajax调用,则必须将您的ajax请求发送到当前网址:www.mywebsite.com/selected-category
而不是www.mywebsite.com/category.php
以保留您选择的类别。
希望这有帮助!