我不是什么专家,所以如果这是一个简单的问题,请原谅我。。。但这让我头晕目眩。
我有一个存档模板(改编自标准的“enfold”主题模板),用于显示简单的书籍列表。根据我在其他地方找到的教程,我创建了下面的循环。
如果我正确理解了代码,下面块的第一部分将用于获取和排序自定义帖子类型的分类值。因此,它会找到“浪漫”、“恐怖”、“幽默”等。然后,它会同时显示带有这些分类值的帖子。因此,我有一个标题为分类法值的小表,以及表中具有该分类法值的帖子。然后,我有一个下一个分类法类型的表和相关的帖子,每个分类法值对应一个。
原始代码中的“orderby”按名称对分类法值进行排序。
它工作得很好,只是每个“分类表/组”中的帖子都是按随机顺序排列的,我需要按帖子标题对它们进行排序。
我想按标题对帖子进行排序(在分类表中)。我该怎么做?我试着复制我能找到的关于这个主题的每一段代码,但都没有成功。
使用的回路为;
<?php //start by fetching the terms for the booktype taxonomy
$terms = get_terms( \'booktype\', array(
\'orderby\' => \'name\',
\'order\' => \'DESC\',
\'hide_empty\' => 0
) );
?>
<?php
foreach( $terms as $term ) {
// Define the query
$args = array(
\'post_type\' => \'fiction\',
\'booktype\' => $term->slug
);
$query = new WP_Query( $args );
// output the book type in a heading tag
echo\'<h4>Book Type \' . $term->name . \'</h4>\';
echo \'<table>\';
echo \'<tr>\';
echo \'<th>Title</th>\';
echo \'<th>Author</th> \';
echo \'<th>Published</th>\';
echo \'<th>ISBN</th>\';
echo \'<th>Sales</th>\';
echo \'</tr>\';
while ( $query->have_posts() ) : $query->the_post();
?>
<tr>
<td><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></td>
<td><?php the_field( \'book-author\' ); ?></td>
<td><?php the_field( \'book-published\' ); ?></td>
<td><?php the_field( \'book-isbn\' ); ?></td>
<td><?php the_field( \'book-sales\' ); ?></td>
</tr>
<?php endwhile;
echo \'</table>\';
wp_reset_postdata();
} ?>
如果我尝试编辑第二个块(下面)中的数组并向其中添加orderby,它似乎会杀死第一个块。我只得到有标题但没有帖子的空表。
// Define the query
$args = array(
\'post_type\' => \'fiction\',
\'booktype\' => $term->slug
);
$query = new WP_Query( $args );
我还能尝试什么?
SO网友:cjbj
具有wp_query
可以在orderby参数中指定一个数组。您甚至可以给出不同的订单标准。像这样:
$args = array(
\'post_type\' => \'fiction\',
\'orderby\' => \'name title\',
\'order\' => \'ASC\',
);
或
$args = array(
\'post_type\' => \'fiction\',
\'orderby\' => array( \'name\' => \'DESC\', \'title\' => \'ASC\' )
);
这应该使您能够进行多维排序(需要WP 4.0或更高版本)。