JavaScript is disabled in your browser. Please enable it for the full experience.
SQL

Hogyan szabadulj meg a Flamingo „zombi” adataitól SQL-lel

Sokan telepítik a Flamingo plugint a Contact Form 7 mellé, gyakran egyetlen célból: hogy a bejövő levelek tárgymezőjében…

⏳ 5 perc

Lőrincz András

Sokan telepítik a Flamingo plugint a Contact Form 7 mellé, gyakran egyetlen célból: hogy a bejövő levelek tárgymezőjében megjelenjen egy egyedi sorszám ([_serial_number]). A CF7 plugin készítője is ezt ajánlja a honlapján.

Növekvő és lassuló adatbázis

Azt azonban kevesen tudják, hogy ennek hatalmas technikai ára lehet. A plugin ugyanis csak úgy tud sorszámozni, ha minden egyes levelet duplikálva elment a WordPress wp_posts és wp_postmeta tábláiba. Ez idővel több százezer felesleges „szemét” sort eredményezhet, drasztikusan lassítva az adatbázist. Ebben a cikkben megmutatom a tisztító SQL parancsot.

phpMyAdminban futtatható sql

Elsőnek informálódjunk! Futtasd le ezt az SQL lekérdezést az éles adatbázison. Ez csak olvas, nem módosít semmit, és egy szép összesítést ad.

-- 1. Megszámoljuk a bejegyzéseket típusonként (Üzenetek és Kontaktok)
SELECT post_type, COUNT(*) as darabszam
FROM wput_posts 
WHERE post_type IN ('flamingo_inbound', 'flamingo_contact')
GROUP BY post_type;

-- 2. Megszámoljuk, hogy ezekhez pontosan mennyi META adat tartozik (ez a "súlyos" rész)
SELECT p.post_type, COUNT(*) as meta_sorok_szama
FROM wput_postmeta pm
INNER JOIN wput_posts p ON pm.post_id = p.ID
WHERE p.post_type IN ('flamingo_inbound', 'flamingo_contact')
GROUP BY p.post_type;

Mit fogsz látni?

Két táblázatot kapsz eredményül:

  1. Az első táblázat megmutatja a levelek számát
  2. A második táblázat: megmutatja, hogy ez a fenti levelek hány (száz)ezer sort foglal el a postmeta táblában.

Ha megvannak a számok, és látod, hogy tényleg ez a szemét foglalja a helyet, akkor jöhet a törlés.

Mielőtt ezt futtatnád, készíts biztonsági mentést az adatbázisról! A parancsban szereplő wp_ előtagot cseréld le a sajátodra (pl. wput_), ha eltérő.

Ez a kódsorozat három lépésben távolítja el a Flamingo által felhalmozott adatokat, miközben nem bántja a Contact Form 7 beállításait vagy a CFDB7 pluginban tárolt (valós) mentéseket.

-- 1. Lépés: A legdurvább helyfoglalók (meta adatok) törlése
-- Ez törli a technikai szemetet (IP címek, user agentek, logok) a postmeta táblából.
DELETE pm
FROM wp_postmeta pm
INNER JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.post_type IN ('flamingo_inbound', 'flamingo_contact');

-- 2. Lépés: A bejövő üzenetek törlése
-- Ez távolítja el magukat a levél-duplikátumokat a posts táblából.
DELETE FROM wp_posts 
WHERE post_type = 'flamingo_inbound';

-- 3. Lépés: A kényszerített címtár törlése
-- A Flamingo minden feladót elment "kapcsolatként". Ha nincs rá szükséged, ez is törölhető.
DELETE FROM wp_posts 
WHERE post_type = 'flamingo_contact';

Másik opció: Contact Form 7 Database Addon

Amennyiben menteni szeretnénk a CF7-ből érkező adatokat, használjuk a Contact Form 7 Database Addon – CFDB7 nevű plugint. Ez a bővítmény saját adattáblát készít, így nem szemeteli tele a wp_postmeta és wp_posts táblákat, amelyek egyébként is hajlamosak a kritikus méretűre hízni.

Lőrincz András avatar

Lőrincz András

Lőrincz András vagyok, így hívnak. WordPress fejlesztőként weboldalak készítésével foglalkozom.

Amikor épp nem weboldalakat rakok össze, kvantumfizikáról vagy sci-firől olvasok, nézek videókat. Néha pedig elmerengek azon, hogy vajon mit csinál a másik énem egy párhuzamos univerzumban. Talán ő is épít valamit – vagy épp megőrült.

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük