get_postsにおけるソートについて

チューニングをしてて気付いたこと。大量のデータをget_postsを使って検索をかける時にその中でソートをするとかなりの時間がかかってしまう。 よって、get_postsによって得られたWP_Query object から必要な情報だけを取り出し、何らかの形で通常の配列に直してからarray_multisortやusortなどを用いて並び替えることで処理速度をあげることができる。

$room_posts = get_posts($args);
$room_infos = array();//並び替えを実行できる通常の配列
$room_infos[]=($room_posts->ID,...)
//...

  usort($room_infos, function ($a, $b) {
        if ($a[1] == $b[1]) {
          return 0;
        }
        return ($a[1] < $b[1]) ? -1 : 1;
      });//要素のはじめから2番めの値を並び替える場合

$room_postsは特殊な配列なので通常のソートはできないことに注意する。