在同一链路上对ASC和DESC进行排序

时间:2016-01-28 15:57:01

标签: php sorting

目前我正在使用WordPress并有一个列表,我可以在其中订购帖子asc和desc,但有个别链接,例如" A-Z"和" Z-A"。

我想要实现的是能够让用户单击相同的链接,因为列表在单击时将asc和desc排序。

以下是我目前所拥有的代码,但我不知道如何将其合并到一个链接中。

<?php
$type = 'test';
$args=array(
  'post_type' => $type,
  'post_status' => 'publish',
);

if( isset( $_GET['sort'] ) && "titleasc" == $_GET['sort'] ){
    $args['orderby'] = 'title';
    $args['order'] = 'ASC';
}

if( isset( $_GET['sort'] ) && "titledesc" == $_GET['sort'] ){
    $args['orderby'] = 'title';
    $args['order'] = 'DESC';
}

我的示例链接是标准:

<th>Title <span><a href="?sort=titleasc">A-Z</a> <a href="?sort=titledesc">Z-A</a></span> </th>

我想我可以写一个elseif,但当我尝试它时,要么中断,要么根本不改变。我认为这个想法是代码需要检查它是asc还是desc然后反过来做。我只是不完全确定如何用我有限的知识来写它。

给出的任何指示都会非常有帮助!感谢

1 个答案:

答案 0 :(得分:0)

你所要做的就是在HTML中添加你在php中使用的相同逻辑(当然是php ;-))

<?php
if( isset( $_GET['sort'] ) && "titleasc" == $_GET['sort'] ){
    echo '<a href="?sort=titledesc">Z-A</a>';
}

if( isset( $_GET['sort'] ) && "titledesc" == $_GET['sort'] ){
    echo '<a href="?sort=titleasc">A-Z</a>';
}
?>