如何在已按类别排序后按标题对帖子进行排序

时间:2017-01-03 作者:Adoptable

我不是什么专家,所以如果这是一个简单的问题,请原谅我。。。但这让我头晕目眩。

我有一个存档模板(改编自标准的“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 );
我还能尝试什么?

5 个回复
SO网友:KAGG Design

您应该修改此片段:

// Define the query
$args = array(
\'post_type\' => \'fiction\',
\'booktype\' => $term->slug,
\'orderby\' => \'name\',
\'order\' => \'ASC\'
);

SO网友:Tunji

您要做的是将呼叫更新到WP_Query 指定orderby 参数为title 还有你的订单ASCDESC.

// Define the query
$args = array(
    \'post_type\' => \'fiction\',
    \'booktype\' => $term->slug,
    \'orderby\' => \'title\',
    \'order\'   => \'DESC\',
);

SO网友:Magnus Guyra

快速而肮脏的做法是让foreach获取所有类别并按字母顺序排序,然后让foreach内部获取所述类别内的所有帖子并按字母顺序排序。

不太喜欢嵌套foreach,但它应该可以做到这一点。

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或更高版本)。

SO网友:Viewer

你是如何注册分类法的?您必须制作它们。”;“层次结构”;订购它们。

示例:

register_taxonomy( $taxonomy, $object_type,
        [
             \'hierarchical\' => true,
             \'label\' => __( $name ),
             \'query_var\' => $something,
             \'rewrite\' => ...
            ]
        );

相关推荐

WooCommerce在Orders列表的Bulk Actions下拉列表中添加一个新的Bulk Actions

我试图在WooCommerce订单列表中添加一个自定义批量操作,这将是我为单个订单编写的一段代码,但需要使其递归工作。我知道:Custom bulk_action 但它指的是wordpress批量操作菜单,而不是专门针对woocommerce的。你能帮我在我的woocommerce订单列表插件中运行它吗?此外,我还对如何在添加该操作后扫描要检查的订单并仅对所选订单应用批量操作感到有点困惑。