esc_like( 'wpcev_dismissed_' ) . '%'; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- one-shot uninstall; no caching layer applies. $rows = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, meta_key FROM {$wpdb->usermeta} WHERE meta_key LIKE %s", $like ) ); foreach ( (array) $rows as $row ) { delete_user_meta( (int) $row->user_id, $row->meta_key ); } } } if ( is_multisite() ) { $wpcev_site_ids = get_sites( array( 'fields' => 'ids', 'number' => 0, 'update_site_meta_cache' => false, ) ); $wpcev_all_opted = ! empty( $wpcev_site_ids ); $wpcev_any_opted = false; foreach ( $wpcev_site_ids as $wpcev_site_id ) { switch_to_blog( (int) $wpcev_site_id ); if ( wpcev_uninstall_opted_in() ) { wpcev_uninstall_site_data(); $wpcev_any_opted = true; } else { $wpcev_all_opted = false; } restore_current_blog(); } // Only safe to drop the shared user meta when nobody still needs it. if ( $wpcev_all_opted && $wpcev_any_opted ) { wpcev_uninstall_user_meta(); } unset( $wpcev_site_ids, $wpcev_site_id, $wpcev_all_opted, $wpcev_any_opted ); } elseif ( wpcev_uninstall_opted_in() ) { wpcev_uninstall_site_data(); wpcev_uninstall_user_meta(); }