所以我希望有一个档案,以随机顺序显示其帖子。
<?php
$query = new WP_Query($query_string."&orderby=rand");
?>
但如果用户选择,他们也可以通过单击按钮以不同的方式排列帖子。
<?php
$sort_date = add_query_arg(array(\'orderby\'=>\'date\',\'order\'=>\'asc\'));
$sort_name = add_query_arg(array(\'orderby\'=>\'title\',\'order\'=>\'asc\'));
?>
<div class="sort">
Sort by: <a href="<?php echo $sort_date; ?>">Date Listed</a> | <a href="<?php echo $sort_name; ?>">Name</a>
</div>
这两件事是分开工作的,但当我尝试将它们一起使用时,归档文件会随机显示帖子。
我怎样才能让这两个一起工作?
最合适的回答,由SO网友:ngearing 整理而成
所以我终于明白了。
使用pre_get_posts
以及$_GET
用于检查是否添加了任何查询参数的全局变量非常有用。
我使用以下代码来获得所需的结果。
function my_pre_get_posts($query) {
if(
$query->is_main_query() &&
is_archive() &&
!isset($_GET[\'orderby\']) && // checks for query args
!is_admin()
) {
$query->set(\'orderby\',\'rand\');
}
add_action(\'pre_get_posts\', \'my_pre_get_posts\');