get_posts-orderby desc错误的顺序

在我的WordPress插件中, 我使用以下内容获取帖子:

$args = array( 'post_type' => 'wpplugin_pp_order', 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'ID' ); $posts = get_posts($args);

问题是结果像post_id一样返回:
3000 3001 3002 3003 2999 2998

如何将结果正确排序?
#1找到了解决此问题的方法-(好像其他人也遇到了同样的问题-Wordpress get_posts附件orderby)
该问题是由扩展wp_list_table类的usort函数引起的。我喜欢大多数其他人从一些在线示例中获得的信息(每个人似乎都使用相同的代码):
function usort_reorder($a, $b) { $orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'order'; $order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc'; $result = strcmp($a[$orderby], $b[$orderby]); return ($order==='asc') ? $result : -$result; }usort($data, 'usort_reorder');

要解决该问题, 只需在其周围放一个if语句:
if (isset($_REQUEST['orderby'])) { function usort_reorder($a, $b) { $orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'order'; $order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc'; $result = strcmp($a[$orderby], $b[$orderby]); return ($order==='asc') ? $result : -$result; } usort($data, 'usort_reorder'); }

#2
< ?php $args = array( 'post_type' => 'wpplugin_pp_order', 'post_status' => 'publish', 'posts_per_page' => -1, 'orderby' => 'ID', 'order' => 'ASC', ); $query = new WP_Query($args); if ($query-> have_posts()) : while ($query-> have_posts()) : $query-> the_post(); // your codeendwhile; endif; wp_reset_query(); ?>

#3我在这里为你找到了一些:
https://wordpress.stackexchange.com/questions/109849/order-by-desc-asc-in-custom-wp-query
只需将” ASC” 更改为” DESC” , 然后再次执行(:
【get_posts-orderby desc错误的顺序】让我知道我是否有所帮助。

    推荐阅读