2015-06-11 4 views
0

В моей WordPress плагин я получаю сообщения, используя следующие:get_posts - OrderBy убывание неправильный заказ

$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

На каком-то веб-сайте у меня почти такой же код, за исключением того, что я поставил оператор orderby перед «порядком» в массиве args. Вы пробовали это? Для меня это хорошо работает. – Paul

ответ

0

Найдено решение этой проблемы - (похоже, другие, также с той же проблемой - Wordpress get_posts attachments orderby)

проблема вызвана функцией usort, которая простирается wp_list_table класс. Я как и большинство других получили это от некоторых онлайн-пример (все, кажется, использует один и тот же код):

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 (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
<?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(); 

?>   
Смежные вопросы