WordPress Version: 6.4
/**
* Finds and exports attachments associated with an email address.
*
* @since 4.9.6
*
* @param string $email_address The attachment owner email address.
* @param int $page Attachment page number.
* @return array {
* An array of personal data.
*
* @type array[] $data An array of personal data arrays.
* @type bool $done Whether the exporter is finished.
* }
*/
function wp_media_personal_data_exporter($email_address, $page = 1)
{
// Limit us to 50 attachments at a time to avoid timing out.
$number = 50;
$page = (int) $page;
$data_to_export = array();
$user = get_user_by('email', $email_address);
if (false === $user) {
return array('data' => $data_to_export, 'done' => true);
}
$post_query = new WP_Query(array('author' => $user->ID, 'posts_per_page' => $number, 'paged' => $page, 'post_type' => 'attachment', 'post_status' => 'any', 'orderby' => 'ID', 'order' => 'ASC'));
foreach ((array) $post_query->posts as $post) {
$attachment_url = wp_get_attachment_url($post->ID);
if ($attachment_url) {
$post_data_to_export = array(array('name' => __('URL'), 'value' => $attachment_url));
$data_to_export[] = array('group_id' => 'media', 'group_label' => __('Media'), 'group_description' => __('User’s media data.'), 'item_id' => "post-{$post->ID}", 'data' => $post_data_to_export);
}
}
$done = $post_query->max_num_pages <= $page;
return array('data' => $data_to_export, 'done' => $done);
}