Tovább a tartalomhoz

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.

  1. Nyisd meg az űrlapot, majd az űrlap beállításai között válaszd a Személyes adatok oldalt.
  2. 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.
  3. Add meg a napok számát, és mentsd a beállítást.
https://minta-bolt.hu/wp-admin/admin.php?page=gf_edit_forms&view=settings&subview=personal-data&id=14
Az űrlap személyes adatok beállításai a megőrzési szabállyal

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.

  • 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.

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;
}

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.

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:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások