【问题标题】:get_posts - orderby desc wrong orderget_posts - orderby desc 错误的顺序
【发布时间】:2015-06-11 00:35:11
【问题描述】:

在我的 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

我怎样才能把结果按正确的顺序排列?

【问题讨论】:

  • 你有置顶帖
  • 在某些网站中,我的代码几乎相同,只是我将 'orderby' 语句放在 args 数组中的 'order' 之前。你试过吗?对我来说效果很好。

标签: wordpress wordpress-theming


【解决方案1】:

找到了解决这个问题的方法——(好像其他人也有同样的问题——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');
        }

【讨论】:

    【解决方案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 code
    
                endwhile;
                endif;
                wp_reset_query();
    
    ?>          
    

    【讨论】:

      【解决方案3】:

      我在这里为你找到了一些:

      https://wordpress.stackexchange.com/questions/109849/order-by-desc-asc-in-custom-wp-query

      只需将 'ASC' 更改为 'DESC' 并再次执行 (:

      如果我提供了帮助,请告诉我。

      【讨论】:

        猜你喜欢
        • 2012-02-06
        • 1970-01-01
        • 2019-03-29
        • 2015-01-13
        • 2021-12-25
        • 1970-01-01
        • 2011-06-08
        • 2017-03-29
        • 2012-12-14
        相关资源
        最近更新 更多