在我的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
如何将结果输入正确的顺序?
答案 0 :(得分:0)
找到了解决这个问题的方法 - (似乎其他人也有同样的问题 - Wordpress get_posts attachments 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');
}
答案 1 :(得分:-1)
<?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 code
endwhile;
endif;
wp_reset_query();
?>
答案 2 :(得分:-1)
我在这里找到了一些:
https://wordpress.stackexchange.com/questions/109849/order-by-desc-asc-in-custom-wp-query
只需更改&#39; ASC&#39;为了'DESC&#39;然后再做一次(:
如果我有所帮助,请告诉我。