チューニングをしてて気付いたこと。大量のデータを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は特殊な配列なので通常のソートはできないことに注意する。