'ids', 'number' => 0]) : [get_current_blog_id()]; foreach ($baton_sites as $baton_site) { if (is_multisite()) { switch_to_blog($baton_site); } $baton_ids = get_posts([ 'post_type' => 'baton_walkthrough', 'post_status' => 'any', 'numberposts' => -1, 'fields' => 'ids', ]); foreach ($baton_ids as $baton_id) { wp_delete_post($baton_id, true); } // progress and the login flag are saved per site (user options carry the site's table prefix) delete_metadata('user', 0, $wpdb->get_blog_prefix() . 'baton_progress', '', true); delete_metadata('user', 0, $wpdb->get_blog_prefix() . 'baton_login_pending', '', true); delete_metadata('user', 0, 'baton_pro_nudge_dismissed', '', true); // the recordings folder in this site's uploads $baton_dir = trailingslashit(wp_upload_dir(null, false)['basedir']) . 'baton'; if (is_dir($baton_dir)) { foreach (glob($baton_dir . '/{,.}*', GLOB_BRACE) ?: [] as $baton_file) { if (is_file($baton_file)) { wp_delete_file($baton_file); } } @rmdir($baton_dir); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged,WordPress.WP.AlternativeFunctions.file_system_operations_rmdir } if (is_multisite()) { restore_current_blog(); } }