delete( $file ); } } } // Remove the CSS directory. $wp_filesystem->rmdir( $css_dir ); // Remove parent directory if empty. $parent_dir = dirname( $css_dir ); if ( file_exists( $parent_dir ) ) { $remaining_files = glob( $parent_dir . '/*' ); if ( empty( $remaining_files ) ) { $wp_filesystem->rmdir( $parent_dir ); } } } /** * Clean up plugin options. * * Removes all options stored by the plugin. * * @since 1.0.0 * * @return void */ function acumenpopup_cleanup_options() { delete_option( 'acumenpopup_do_activation_redirect' ); delete_option( 'acumenpopup_settings' ); delete_option( 'acumenpopup_settings_v2' ); delete_option( 'acumenpopup_ab_tests' ); } /** * Clean up campaign posts and meta. * * Removes all campaign posts and their associated meta data. * This is optional and disabled by default to prevent accidental data loss. * * @since 1.0.0 * * @return void */ function acumenpopup_cleanup_campaigns() { $settings = get_option( 'acumenpopup_settings', array() ); $delete_campaigns = ! empty( $settings['delete_on_uninstall'] ); if ( ! $delete_campaigns ) { return; } $campaigns = get_posts( array( 'post_type' => 'acumen_popup_cmpgn', 'posts_per_page' => -1, 'post_status' => 'any', 'fields' => 'ids', ) ); foreach ( $campaigns as $post_id ) { wp_delete_post( $post_id, true ); } } // Run cleanup functions — campaigns must be checked before options are deleted. acumenpopup_cleanup_generated_files(); acumenpopup_cleanup_campaigns(); acumenpopup_cleanup_options();