Beküldések automatikus törlése
Hogyan töröltesd vagy tedd a kukába a régi beküldéseket a megőrzési szabállyal, és hogyan szabhatod testre kóddal.
A Gravity Forms a személyes adatok beállításai között képes a régi beküldéseket automatikusan törölni. Ez a beküldésekre és a „Mentés és folytatás” piszkozatokra is vonatkozik. Két módszer van: a kód nélküli megőrzési szabály, és a kóddal vezérelt törlés.
Megőrzési szabály beállítása
Szekció neve “Megőrzési szabály beállítása”- Nyisd meg az űrlapot, majd az űrlap beállításai között válaszd a Személyes adatok oldalt.
- A megőrzési szabály résznél válassz műveletet:
- Beküldések automatikus áthelyezése a kukába: a megadott napszám után a beküldés a kukába kerül. Biztonságosabb, mert még visszaállíthatod.
- Beküldések automatikus végleges törlése: a beküldés és a hozzá tartozó fájlok véglegesen eltűnnek az adatbázisból és a szerverről. Nem vonható vissza.
- Add meg a napok számát, és mentsd a beállítást.

A képen a megőrzési szabály és az IP-cím tárolását tiltó beállítás helye látszik.
A legkisebb megadható érték egy nap, hogy a beküldés feldolgozása biztosan befejeződjön a törlés előtt. A napok száma legalább ennyit jelent, nem pontos időpontot.
Tudnivalók
Szekció neve “Tudnivalók”- Időzítés: a takarítás a napi WordPress-cron feladattal fut, ezért egy lejárt beküldés akár 24 óráig is látszhat.
- Piszkozatok: a „Mentés és folytatás” részleges beküldéseit ugyanígy törli a rendszer.
- Adatminimalizálás: ha az a célod, hogy kevesebb személyes adat maradjon, kapcsold be ugyanitt az IP-címek tárolásának tiltását is. Így az IP-cím el sem kerül az adatbázisba.
Törlés kóddal
Szekció neve “Törlés kóddal”Ha a beépített szabály nem elég (például a csillagozott beküldéseket meg akarod tartani), három lehetőséged van.
A napi törlés listájának módosítása
Szekció neve “A napi törlés listájának módosítása”A gform_entry_ids_automatic_deletion szűrő megkapja a törlésre ítélt azonosítókat, és kivehetsz belőlük. A példa megőrzi a csillagozott beküldéseket:
add_filter( 'gform_entry_ids_automatic_deletion', 'filter_rescue_starred_entries' );function filter_rescue_starred_entries( $entry_ids ) { $ids_to_delete = array();
foreach ( $entry_ids as $entry_id ) { $entry = GFAPI::get_entry( $entry_id );
if ( is_wp_error( $entry ) ) { continue; }
// Csak a nem csillagozott beküldések maradnak a törlendők között. if ( ! $entry['is_starred'] ) { $ids_to_delete[] = $entry_id; } else { GFCommon::log_debug( 'Megmentett csillagozott beküldés: ' . $entry_id ); } }
return $ids_to_delete;}A fájlok törlésének tiltása
Szekció neve “A fájlok törlésének tiltása”Alapból a beküldés végleges törlésekor a hozzá tartozó fájlok is törlődnek. Ha a fájlokat meg akarod tartani, a gform_field_types_delete_files szűrő adjon vissza üres tömböt. Ez minden űrlapra érvényes:
add_filter( 'gform_field_types_delete_files', '__return_empty_array' );Beküldés törlése közvetlenül a beküldés után
Szekció neve “Beküldés törlése közvetlenül a beküldés után”Alapból a Gravity Forms minden beküldött adatot rögzít. A beküldéseket el kell menteni, hogy az értesítések elmenjenek, és a feed-alapú kiegészítők (például a PayPal vagy a Felhasználó regisztráció) feldolgozhassák őket. Ezért jelenleg nincs beépített beállítás, amely megakadályozná a beküldés létrehozását. A megőrzési szabály az ajánlott megoldás az automatikus takarításhoz és a rövid ideig tartó megőrzéshez.
Ha a beküldést közvetlenül a létrejötte után kell törölni, használhatsz külső kiegészítőt (például a Gravity Flow Form Connector Extension, a Gravity Wiz Disable Entry Creation vagy a CosmicGiant Entry Automation, illetve a PluginOwl titkosított mezői). Ezeket a Gravity Forms nem teszteli és hivatalosan nem támogatja.
Külső megoldás helyett egyedi kóddal is megoldhatod: a kód megvárja, amíg az adat rögzül, majd törli az éppen létrejött beküldést. A gform_after_submission_1 végén lévő 1 az űrlap azonosítója; ha minden űrlapra érvényes legyen, használd a gform_after_submission nevet.
add_action( 'gform_after_submission_1', 'remove_form_entry' );function remove_form_entry( $entry ) { GFAPI::delete_entry( $entry['id'] );}A kódot a téma functions.php fájljába, saját funkcióbővítménybe, saját kiegészítőbe vagy kódrészlet-bővítménybe teheted (Hová tedd a kódrészleteket?). A várt eredmény, hogy a beküldés a beküldés után nem szerepel a Gravity Forms adatbázistábláiban. Ha a kód nem működik, nézd meg a gform_after_submission szűrő leírását. A régi, 1.7-es és korábbi kiadásoknál ugyanez a kód szerepelt.
Törlés azonnal
Szekció neve “Törlés azonnal”Egyedi munkafolyamatnál egy beküldést a GFAPI::delete_entry() függvénnyel törölhetsz:
$entry_id = 123;$result = GFAPI::delete_entry( $entry_id );
if ( is_wp_error( $result ) ) { GFCommon::log_debug( 'A törlés nem sikerült: ' . $result->get_error_message() );} else { GFCommon::log_debug( 'A(z) ' . $entry_id . ' azonosítójú beküldés törölve.' );}Készült: