'afroiabo_lead', 'post_status' => array( 'private', 'trash' ), 'posts_per_page' => 50, 'paged' => max( 1, (int) $page ), 'orderby' => 'ID', 'order' => 'ASC', 'meta_key' => '_afroiabo_email', 'meta_value' => sanitize_email( $email ), ) ); } function afroiabo_privacy_export( $email, $page = 1 ) { if ( ! is_email( $email ) ) { return array( 'data' => array(), 'done' => true ); } $leads = afroiabo_privacy_leads( $email, $page ); $data = array(); foreach ( $leads as $lead ) { $fields = array( array( 'name' => 'Mensaje', 'value' => $lead->post_content ) ); foreach ( array( 'name' => 'Nombre', 'email' => 'Correo', 'phone' => 'Teléfono', 'transcript' => 'Conversación', 'page_url' => 'Página' ) as $key => $label ) { $fields[] = array( 'name' => $label, 'value' => get_post_meta( $lead->ID, '_afroiabo_' . $key, true ) ); } $data[] = array( 'group_id' => 'afrodita-leads', 'group_label' => 'Contactos de AfroditaBot', 'item_id' => 'afrodita-lead-' . $lead->ID, 'data' => $fields ); } return array( 'data' => $data, 'done' => count( $leads ) < 50 ); } function afroiabo_privacy_erase( $email, $page = 1 ) { $result = array( 'items_removed' => false, 'items_retained' => false, 'messages' => array(), 'done' => true ); if ( ! is_email( $email ) ) { return $result; } // Erasure changes the result set: always consume page one to avoid skipping records. $leads = afroiabo_privacy_leads( $email, 1 ); foreach ( $leads as $lead ) { if ( wp_delete_post( $lead->ID, true ) ) { $result['items_removed'] = true; } else { $result['items_retained'] = true; } } $result['done'] = count( $leads ) < 50 || $result['items_retained']; if ( $result['items_retained'] ) { $result['messages'][] = 'No se han podido eliminar todos los contactos. Revisa los permisos de la base de datos.'; } $result['messages'][] = 'Las copias enviadas por correo y el historial del servicio externo requieren revisión separada por el administrador.'; return $result; } add_filter( 'wp_privacy_personal_data_exporters', function ( $exporters ) { $exporters['afrodita-leads'] = array( 'exporter_friendly_name' => 'Contactos de AfroditaBot', 'callback' => 'afroiabo_privacy_export' ); return $exporters; } ); add_filter( 'wp_privacy_personal_data_erasers', function ( $erasers ) { $erasers['afrodita-leads'] = array( 'eraser_friendly_name' => 'Contactos de AfroditaBot', 'callback' => 'afroiabo_privacy_erase' ); return $erasers; } );