基本的な内容ですがメモしておきます。
foreach($rooms as $room){ $args_posts = array( 'post_status' => array('publish'), 'posts_per_page' => -1, 'meta_query' => array( 'key' => 'select_room', 'value' => $room, ) ); $post_infos = get_posts($args_posts); foreach($post_infos as $post_info){ setup_postdata($post_info); $post_id = $post_info->ID; $hoge = get_post_meta($post_id, 'hoge', true); $hoge_array[$room] = $hoge; } }
以上のようなコードは、以下のように検索を一括で行うことで検索数を大分減らせます。
$hoge_array = array(); $args_posts = array( 'post_status' => array('publish'), 'posts_per_page' => -1, 'meta_query' => array( 'key' => 'rooms', 'value' => $rooms, 'compare' => 'IN' ) ); $post_infos = get_posts($args_posts); foreach($post_infos as $post_info){ setup_postdata($post_info); $post_id = $post_info->ID; $hoge = get_post_meta($post_id, 'hoge', true); $room = get_post_meta($post_id, 'room', true); $hoge_array[$room] = $hoge; }
またget_postsした後のget_post_metaは検索をかけたことにならないため、カスタムフィールドを取得する際にはこの順で取得するのが一番よさそうです。