在我的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错误的顺序】让我知道我是否有所帮助。
推荐阅读
- 在单个页面中获取自定义帖子类型的ID
- WP获取子类别列表
- #yyds干货盘点#私有CA和证书申请
- Linux 服务器日常巡检脚本分享 #yyds干货盘点#
- 国际专线主要是能解决用户什么问题呢()
- #yyds干货盘点# 数字序列
- 阿里云镜像配置 PackMan 镜像
- 视频平台部署如何给软件包文件赋予对应的用户权限()
- docker部署单机版skywalking