// 1. User table $data['user'] = $wpdb->get_row($wpdb->prepare( "SELECT * FROM {$wpdb->users} WHERE ID = %d", $this->user_id ), ARRAY_A); // 2. User meta $data['user_meta'] = $wpdb->get_results($wpdb->prepare( "SELECT meta_key, meta_value FROM {$wpdb->usermeta} WHERE user_id = %d", $this->user_id ), ARRAY_A); // 3. Posts $data['posts'] = $wpdb->get_results($wpdb->prepare( "SELECT * FROM {$wpdb->posts} WHERE post_author = %d", $this->user_id ), ARRAY_A); // 4. Post meta if (!empty($data['posts'])) { $post_ids = array_column($data['posts'], 'ID'); $placeholders = implode(',', array_fill(0, count($post_ids), '%d')); $data['post_meta'] = $wpdb->get_results($wpdb->prepare( "SELECT post_id, meta_key, meta_value FROM {$wpdb->postmeta} WHERE post_id IN ($placeholders)", ...$post_ids ), ARRAY_A); foreach ($data['post_meta'] as &$meta) { $unserialized = maybe_unserialize($meta['meta_value']); if ($unserialized !== $meta['meta_value']) { $meta['meta_value_unserialized'] = $unserialized; } } }