'mmaps_activity', 'post_status' => 'any', 'posts_per_page' => -1, 'fields' => 'ids', ) ); foreach ( $mentora_maps_ids as $mentora_maps_id ) { // `true` vuol dire davvero: nel cestino resterebbero, e chi ha chiesto // di cancellare non si aspetta di trovarle nel cestino. wp_delete_post( (int) $mentora_maps_id, true ); } /* --- I termini: categorie e comuni ---------------------------------------- */ foreach ( array( 'mmaps_category', 'mmaps_locality' ) as $mentora_maps_tax ) { $mentora_maps_termini = get_terms( array( 'taxonomy' => $mentora_maps_tax, 'hide_empty' => false, 'fields' => 'ids', ) ); if ( is_wp_error( $mentora_maps_termini ) ) { continue; } foreach ( $mentora_maps_termini as $mentora_maps_termine ) { wp_delete_term( (int) $mentora_maps_termine, $mentora_maps_tax ); } } /* --- Le opzioni ------------------------------------------------------------ */ $mentora_maps_opzioni = array( 'mentora_maps_settings', 'mentora_maps_version', 'mentora_maps_tree_version', 'mentora_maps_unparked', 'mentora_maps_pagine', 'mentora_maps_import_profiles', 'mentora_maps_geocode_queue', 'mentora_maps_rifai_permalink', 'mentora_maps_badge_notice', ); foreach ( $mentora_maps_opzioni as $mentora_maps_opzione ) { delete_option( $mentora_maps_opzione ); } /* --- I file nostri dentro `uploads` ---------------------------------------- */ $mentora_maps_dove = wp_upload_dir(); if ( ! empty( $mentora_maps_dove['basedir'] ) ) { /* * **Le cartelle le toglie WP_Filesystem**, non `rmdir()`. Non e * pignoleria: su un hosting dove PHP scrive per conto di un altro * utente, `rmdir()` fallisce e lascia la cartella li; WP_Filesystem * sa chiedere al sistema giusto. E `rmdir( …, true )` scende da solo * fino in fondo, quindi sparisce anche il giro a mano sui due * livelli. * * Se le credenziali non ci sono — succede, con FTP — non si insiste: * quelle cartelle tengono file temporanei dell'importazione e i font * scaricati, e una cartella che resta non e un dato di nessuno. */ require_once ABSPATH . 'wp-admin/includes/file.php'; global $wp_filesystem; if ( WP_Filesystem() && $wp_filesystem ) { foreach ( array( 'mentora-maps-import', 'mentora-maps-fonts' ) as $mentora_maps_cartella ) { $mentora_maps_percorso = trailingslashit( $mentora_maps_dove['basedir'] ) . $mentora_maps_cartella; if ( $wp_filesystem->is_dir( $mentora_maps_percorso ) ) { $wp_filesystem->rmdir( $mentora_maps_percorso, true ); } } } } /* --- Quello che resta in giro ---------------------------------------------- */ // L'appuntamento della geocodifica, se ne era rimasto uno in sospeso. wp_clear_scheduled_hook( 'mentora_maps_geocode_tick' ); // I transient dell'import: hanno un nome per utente, quindi si cercano. // Il vecchio prefisso `mm_geo_` non si cerca piu: era il nome di prima della // revisione, nessun sito pubblico ha mai avuto quelle righe, e lasciarlo qui // vorrebbe dire spedire un prefisso di tre caratteri in un file che chi // rivede apre per primo. global $wpdb; $wpdb->query( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- uninstall routine: runs once, and removes only this plugin's own rows. WordPress has no API for a prefix-wide delete on postmeta and options. "DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_mentora_maps_%' OR option_name LIKE '_transient_timeout_mentora_maps_%'" );