get_id(); } global $wpdb; $placeholders = implode(',', array_fill(0, count($object_ids), '%d')); $db_info = $this->get_db_info(); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, PluginCheck.Security.DirectDB.UnescapedDBParameter, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Batch meta read; table/column names from WooCommerce get_db_info(); IN placeholders built in $placeholders. $raw_meta_data = $wpdb->get_results( $wpdb->prepare( "SELECT {$db_info['object_id_field']} as object_id, {$db_info['meta_id_field']} as meta_id, meta_key, meta_value FROM {$db_info['table']} WHERE {$db_info['object_id_field']} IN ($placeholders) ORDER BY {$db_info['meta_id_field']}", ...$object_ids ) ); $all_meta_data = []; foreach ($objects as $i => $object) { $meta_data = []; foreach ($raw_meta_data as $record) { if ((int) $record->object_id === (int) $object_ids[$i]) { $meta_data[] = $record; } } $all_meta_data[] = $this->filter_raw_meta_data($object, $meta_data); } return $all_meta_data; } }