如何让用户按类别选择帖子顺序?

时间:2011-04-26 作者:Downloadtaky

我正在运行一个基于wordpress的网站,我需要让用户选择如何在类别页面中显示帖子。

我想在分类页面中有一个可以点击的按钮,这样读者就可以选择是否要查看按日期或从a到Z或从Z到a排序的帖子。

有没有人能告诉我如何做到这一点?请解释一下,就像你在和你12岁的儿子说话一样:-)我在谷歌上搜索了很多关于这一点的信息,但我从来没有找到任何可以复制/粘贴到代码中或可以修改的内容。我不明白怎么做。。。有什么解决方案吗?

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

在您的类别中排名第一。php(取决于主题文件)添加一个简单的表单,让用户对a-Z或Z-a进行排序:

<form action="" name="custom_order" method="POST">
    <p> sort order:   
        <select name="CU_Order" id="CU_Order">
            <option value="ASC">A-Z</option>
            <option value="DESC">Z-A</option>
        </select>
    </p>
    <p> 
        <input type="hidden" name="cs_action" value="custom_sort_order">
        <input type="submit" name="submit" value="sort">
    </p>
</form>
然后使用pre_get_posts 钩住您将查询更改为用户选择的顺序:

add_action( \'pre_get_posts\', \'change_sort_order\' ); 
function change_sort_order(&$query){
    if (isset($_POST[\'cs_action\']) && $_POST[\'cs_action\'] == \'custom_sort_order\'){
        global $wp;
        if (isset($wp->query_vars["CU_Order"])){
            $query->set( \'order\', $wp->query_vars["CU_Order"] );
        }
    }
}
剩下的就是添加CU_Order WordPress知道使用的查询变量列表的顺序query_vars 挂钩:

add_filter(\'query_vars\', \'add_custom_order_query_vars\');
function add_custom_order_query_vars($vars) {
    // add CU_Order to the valid list of variables
    $new_vars = array(\'CU_Order\');
    $vars = $new_vars + $vars;
    return $vars;
}
更简单的解释:

复制类别中的第一个代码。php

将其余内容复制到主题的功能中。php

完成。

结束