我也有同样的问题。我使用表单对数据进行排序,并使用paginate_links. 我的解决方案是$_SESSIONS
存储$_POST
来自排序的数据(而不仅仅是解析$_POST
数据),并将窗体操作设置为get_permalink()
. 如果未使用分页或未使用分页,请确保取消设置会话$_POST
正在初始化排序窗体。
<script>
function submitform(val) {
document.getElementById(\'sort-option\').value = val;
document.getElementById(\'form-sort\').submit();
}
</script>
<form id="form-sort" action="<?php echo get_permalink(); ?>" method="post">
<ul>
<li>Sort By:</li>
<li><a href="#!" onclick="javascript: submitform(\'newest\');">Newest rating</a>
</li>
<li><a href="#!" onclick="javascript: submitform(\'highest\');">Highest rating</a>
</li>
<li><a href="#!" onclick="javascript: submitform(\'lowest\');">Lowest rating</a>
</li>
</ul>
<input type=\'hidden\' id=\'sort-option\' name=\'sort-option\' value=\'\'>
</form>
-
if($wp_query->get(\'page\') == 0 && empty($_POST) && !empty($_SESSION)) session_unset();
if(!empty($_POST) || !empty($_SESSION)) {
switch($_POST[\'sort-option\']) {
case \'newest\':
$_SESSION["sort"] = SORT_DESC;
$_SESSION["sort_by"] = \'review_date\';
break;
case \'highest\':
$_SESSION["sort"] = SORT_DESC;
$_SESSION["sort_by"] = \'rating\';
break;
case \'lowest\':
$_SESSION["sort"] = SORT_ASC;
$_SESSION["sort_by"] = \'rating\';
break;
}
foreach($reviews as $k => $v) {
$column_id[$k] = $v[$_SESSION["sort_by"]];
}
array_multisort($column_id, $_SESSION["sort"], SORT_NUMERIC, $reviews);
}
如果您显示一些代码,我可能可以为您提供更多帮助。