// 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;
}
}
}