{"id":10276,"date":"2026-08-15T01:07:31","date_gmt":"2026-08-14T23:07:31","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/wp-cli-database-cleanup-builder\/"},"modified":"2026-08-15T01:07:31","modified_gmt":"2026-08-14T23:07:31","slug":"wp-cli-database-cleanup-builder","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/","title":{"rendered":"Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">WP-CLI nie zna dla tych polece\u0144 trybu pr\u00f3bnego: co usuni\u0119te, to przepad\u0142o. Ten kreator stawia wi\u0119c przed ka\u017cdym usuni\u0119ciem policzenie, zaczyna od eksportu bazy i m\u00f3wi, co dany krok naprawd\u0119 usuwa.<\/p>\n<div style=\"display: flex; gap: 12px; flex-wrap: wrap;\">\n<div style=\"flex: 2; min-width: 220px;\">\n            <label for=\"wc-pfad\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">\u015acie\u017cka do instalacji WordPress<\/label><br \/>\n            <input type=\"text\" id=\"wc-pfad\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"\/var\/www\/html\/beispiel\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"wc-praefix\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Prefiks tabel<\/label><br \/>\n            <input type=\"text\" id=\"wc-praefix\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"wp_\">\n        <\/div>\n<div style=\"flex: 1; min-width: 160px;\">\n            <label for=\"wc-revisionen\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Rewizje do zachowania na przysz\u0142o\u015b\u0107<\/label><br \/>\n            <input type=\"text\" id=\"wc-revisionen\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; font-family: monospace; box-sizing: border-box;\" value=\"3\">\n        <\/div>\n<\/p><\/div>\n<div style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.85rem; margin: 18px 0 8px;\">Co ma zosta\u0107 uporz\u0105dkowane<\/div>\n<div id=\"wc-aufgaben\" style=\"display: flex; flex-wrap: wrap; gap: 6px 24px;\"><\/div>\n<div style=\"display: flex; gap: 10px; flex-wrap: wrap; margin: 18px 0 0;\">\n        <button id=\"wc-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: #0b1114; border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Zbuduj polecenia<\/button>\n    <\/div>\n<div id=\"wc-ergebnis\" style=\"margin-top: 22px;\"><\/div>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"WP-CLI nie zna dla tych polece\u0144 trybu pr\u00f3bnego: co usuni\u0119te, to przepad\u0142o. Ten kreator stawia wi\u0119c przed ka\u017cdym usuni\u0119ciem policzenie, zaczyna od eksportu bazy i m\u00f3wi, co dany krok naprawd\u0119 usuwa.\",\"label_pfad\":\"\u015acie\u017cka do instalacji WordPress\",\"label_praefix\":\"Prefiks tabel\",\"label_revisionen\":\"Rewizje do zachowania na przysz\u0142o\u015b\u0107\",\"label_aufgaben\":\"Co ma zosta\u0107 uporz\u0105dkowane\",\"knopf\":\"Zbuduj polecenia\",\"fehler_pfad\":\"Brakuje \u015bcie\u017cki do instalacji.\",\"fehler_pfad_absolut\":\"\u015acie\u017cka musi by\u0107 bezwzgl\u0119dna.\",\"fehler_pfad_zeichen\":\"\u015acie\u017cka zawiera znaki, kt\u00f3re pow\u0142oka by zinterpretowa\u0142a.\",\"fehler_praefix\":\"Prefiks tabel mo\u017ce zawiera\u0107 wy\u0142\u0105cznie litery, cyfry i podkre\u015blenia.\",\"fehler_revisionen\":\"Liczba rewizji musi by\u0107 liczb\u0105 ca\u0142kowit\u0105.\",\"fehler_keine_aufgabe\":\"Nie wybrano ani jednego zadania.\",\"a_revisionen\":\"Usu\u0144 rewizje wpis\u00f3w\",\"a_entwuerfe\":\"Usu\u0144 automatyczne szkice\",\"a_papierkorb\":\"Opr\u00f3\u017cnij kosz\",\"a_spam\":\"Usu\u0144 komentarze spam\",\"a_kommentare\":\"Usu\u0144 komentarze z kosza\",\"a_transienten\":\"Usu\u0144 wygas\u0142e transienty\",\"a_transienten_alle\":\"Usu\u0144 wszystkie transienty\",\"a_postmeta\":\"Usu\u0144 osierocone postmeta\",\"a_termmeta\":\"Usu\u0144 osierocone termmeta\",\"a_optimieren\":\"Zoptymalizuj tabele\",\"h_sicherung\":\"Najpierw kopia\",\"h_schritte\":\"Kroki po kolei\",\"h_konstante\":\"Aby rewizje nie odrasta\u0142y\",\"h_befunde\":\"Co przy tym znika\",\"sicherung_erklaerung\":\"\u017badnego z krok\u00f3w poni\u017cej nie da si\u0119 cofn\u0105\u0107. Eksport trwa sekundy i jest jedyn\u0105 drog\u0105 powrotu.\",\"zuerst_zaehlen\":\"najpierw policz\",\"dann_loeschen\":\"potem usu\u0144\",\"konstante_erklaerung\":\"Wiersz trafia do wp-config.php powy\u017cej uwagi o edycji. Ogranicza nowe rewizje, istniej\u0105ce usuwa krok powy\u017cej.\",\"b_revisionen_alle\":\"Polecenie usuwa wszystkie rewizje, a nie kilka ostatnich. Znika z tym historia edycji ka\u017cdego wpisu.\",\"b_revisionen_grenze\":\"Od tego momentu WordPress zachowuje %s rewizji na wpis, tabela nie odrasta wi\u0119c na nowo.\",\"b_transienten_alle\":\"Usuni\u0119cie wszystkich transient\u00f3w obejmuje tak\u017ce te wci\u0105\u017c wa\u017cne. Wszystko, co \u017cyje z buforowania, odbuduje je, co przez kilka minut oznacza odczuwalne obci\u0105\u017cenie.\",\"b_papierkorb\":\"Kosz zostaje opr\u00f3\u017cniony ostatecznie. To, co kto\u015b od\u0142o\u017cy\u0142 tam na p\u00f3\u017aniej, przepada.\",\"b_sql\":\"Ten krok zapisuje SQL bezpo\u015brednio z pomini\u0119ciem WordPressa. Prefiks tabel trzeba wcze\u015bniej sprawdzi\u0107, inaczej na wsp\u00f3lnej bazie polecenie trafi w niew\u0142a\u015bciw\u0105 instalacj\u0119.\",\"b_optimieren\":\"Optymalizacja przepisuje tabele i na chwil\u0119 je blokuje. Na ruchliwej witrynie nale\u017cy to do spokojnej godziny.\",\"b_leer\":\"Je\u015bli nic si\u0119 nie znajdzie, polecenie usuwania zg\u0142osi b\u0142\u0105d o brakuj\u0105cym argumencie. To wynik oczekiwany, a nie niepowodzenie.\",\"b_cron\":\"Jako zadanie cron ca\u0142o\u015b\u0107 nale\u017cy do skryptu przerywaj\u0105cego przy pierwszym b\u0142\u0119dzie, inaczej po nieudanym kroku wykonaj\u0105 si\u0119 wszystkie pozosta\u0142e.\"};<\/p>\n<p>    \/\/ --- reine Rechenlogik ---<\/p>\n<p>    \/\/ Jede Aufgabe kommt mit einem Befehl zum Zaehlen und einem zum Loeschen.\n    \/\/ WP-CLI kennt fuer diese Befehle kein Probelaufen, deshalb steht das\n    \/\/ Zaehlen als eigener Schritt davor.\n    const AUFGABEN = [\n        { kennung: 'revisionen', zaehlen: 'wp post list --post_type=revision --format=count',\n          befehl: 'wp post delete $(wp post list --post_type=revision --format=ids) --force' },\n        { kennung: 'entwuerfe', zaehlen: 'wp post list --post_status=auto-draft --format=count',\n          befehl: 'wp post delete $(wp post list --post_status=auto-draft --format=ids) --force' },\n        { kennung: 'papierkorb', zaehlen: 'wp post list --post_status=trash --format=count',\n          befehl: 'wp post delete $(wp post list --post_status=trash --format=ids) --force' },\n        { kennung: 'spam', zaehlen: 'wp comment list --status=spam --format=count',\n          befehl: 'wp comment delete $(wp comment list --status=spam --format=ids) --force' },\n        { kennung: 'kommentare', zaehlen: 'wp comment list --status=trash --format=count',\n          befehl: 'wp comment delete $(wp comment list --status=trash --format=ids) --force' },\n        { kennung: 'transienten', zaehlen: null, befehl: 'wp transient delete --expired' },\n        { kennung: 'transienten_alle', zaehlen: null, befehl: 'wp transient delete --all' },\n        { kennung: 'postmeta', zaehlen: 'SELECT COUNT(*) FROM {p}postmeta pm LEFT JOIN {p}posts p ON p.ID = pm.post_id WHERE p.ID IS NULL',\n          befehl: 'DELETE pm FROM {p}postmeta pm LEFT JOIN {p}posts p ON p.ID = pm.post_id WHERE p.ID IS NULL', sql: true },\n        { kennung: 'termmeta', zaehlen: 'SELECT COUNT(*) FROM {p}termmeta tm LEFT JOIN {p}terms t ON t.term_id = tm.term_id WHERE t.term_id IS NULL',\n          befehl: 'DELETE tm FROM {p}termmeta tm LEFT JOIN {p}terms t ON t.term_id = tm.term_id WHERE t.term_id IS NULL', sql: true },\n        { kennung: 'optimieren', zaehlen: null, befehl: 'wp db optimize' }\n    ];<\/p>\n<p>    function bauen(e) {\n        const ergebnis = { ok: false, fehler: '', schritte: [], befunde: [], sicherung: '' };\n        const eingabe = e || {};<\/p>\n<p>        const pfad = String(eingabe.pfad === undefined ? '' : eingabe.pfad).trim();\n        if (pfad === '') { ergebnis.fehler = T.fehler_pfad; return ergebnis; }\n        if (pfad.charAt(0) !== '\/') { ergebnis.fehler = T.fehler_pfad_absolut; return ergebnis; }\n        if (\/[;&|`$]\/.test(pfad)) { ergebnis.fehler = T.fehler_pfad_zeichen; return ergebnis; }<\/p>\n<p>        const praefix = String(eingabe.praefix === undefined ? 'wp_' : eingabe.praefix).trim() || 'wp_';\n        if (!\/^[A-Za-z0-9_]+$\/.test(praefix)) { ergebnis.fehler = T.fehler_praefix; return ergebnis; }<\/p>\n<p>        const revisionen = String(eingabe.revisionen === undefined ? '' : eingabe.revisionen).trim();\n        if (revisionen !== '' && !\/^[0-9]+$\/.test(revisionen)) { ergebnis.fehler = T.fehler_revisionen; return ergebnis; }<\/p>\n<p>        const gewaehlt = eingabe.aufgaben || {};\n        const aktive = AUFGABEN.filter(function (a) { return gewaehlt[a.kennung]; });\n        if (!aktive.length) { ergebnis.fehler = T.fehler_keine_aufgabe; return ergebnis; }<\/p>\n<p>        const pfadTeil = ' --path=' + pfad;\n        ergebnis.sicherung = 'wp db export \/home\/pi\/sicherung-vor-aufraeumen.sql' + pfadTeil;<\/p>\n<p>        aktive.forEach(function (a) {\n            const schritt = { kennung: a.kennung, name: T['a_' + a.kennung], zaehlen: '', befehl: '' };\n            if (a.sql) {\n                const zaehlSql = a.zaehlen.replace(\/\\{p\\}\/g, praefix);\n                const loeschSql = a.befehl.replace(\/\\{p\\}\/g, praefix);\n                schritt.zaehlen = 'wp db query \"' + zaehlSql + '\"' + pfadTeil;\n                schritt.befehl = 'wp db query \"' + loeschSql + '\"' + pfadTeil;\n            } else {\n                schritt.zaehlen = a.zaehlen ? a.zaehlen + pfadTeil : '';\n                schritt.befehl = a.befehl + pfadTeil;\n            }\n            ergebnis.schritte.push(schritt);\n        });<\/p>\n<p>        \/\/ --- Befunde ---\n        if (gewaehlt.revisionen) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_revisionen_alle });\n            if (revisionen !== '' && parseInt(revisionen, 10) > 0) {\n                ergebnis.befunde.push({ schwer: false, text: T.b_revisionen_grenze.replace('%s', revisionen) });\n                ergebnis.konstante = \"define( 'WP_POST_REVISIONS', \" + parseInt(revisionen, 10) + \" );\";\n            }\n        }\n        if (gewaehlt.transienten_alle) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_transienten_alle });\n        }\n        if (gewaehlt.papierkorb) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_papierkorb });\n        }\n        if (gewaehlt.postmeta || gewaehlt.termmeta) {\n            ergebnis.befunde.push({ schwer: true, text: T.b_sql });\n        }\n        if (gewaehlt.optimieren) {\n            ergebnis.befunde.push({ schwer: false, text: T.b_optimieren });\n        }\n        ergebnis.befunde.push({ schwer: false, text: T.b_leer });\n        ergebnis.befunde.push({ schwer: false, text: T.b_cron });<\/p>\n<p>        ergebnis.ok = true;\n        return ergebnis;\n    }<\/p>\n<p>    if (typeof window !== 'undefined') {\n        window.LW_TEST = window.LW_TEST || {};\n        window.LW_TEST.WC = { bauen: bauen, AUFGABEN: AUFGABEN };\n    }<\/p>\n<p>    \/\/ --- Anbindung an das Dokument ---<\/p>\n<p>    const btn = document.getElementById('wc-btn');\n    const out = document.getElementById('wc-ergebnis');\n    const aufgabenFeld = document.getElementById('wc-aufgaben');\n    if (!btn || !out || !aufgabenFeld) { return; }<\/p>\n<p>    const KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 6px; padding: 14px; margin-bottom: 18px;';\n    const UEBERSCHRIFT = 'color: var(--text-primary, #e8e8ee); font-weight: 700; margin-bottom: 8px;';\n    const VOREINSTELLUNG = ['revisionen', 'entwuerfe', 'spam', 'transienten', 'postmeta'];<\/p>\n<p>    function el(tag, css, inhalt) {\n        const knoten = document.createElement(tag);\n        if (css) { knoten.setAttribute('style', css); }\n        if (inhalt !== undefined && inhalt !== null) { knoten.textContent = inhalt; }\n        return knoten;\n    }<\/p>\n<p>    function wert(id) {\n        const knoten = document.getElementById(id);\n        return knoten ? knoten.value : '';\n    }<\/p>\n<p>    AUFGABEN.forEach(function (a) {\n        const zeile = el('label', 'display: flex; gap: 8px; align-items: center; cursor: pointer; min-width: 220px;');\n        const kasten = document.createElement('input');\n        kasten.type = 'checkbox';\n        \/\/ Eigenes Vorzeichen: sonst kollidiert die Aufgabe \"revisionen\" mit\n        \/\/ dem Zahlenfeld gleichen Namens, und getElementById trifft das\n        \/\/ falsche Element.\n        kasten.id = 'wc-a-' + a.kennung;\n        kasten.checked = VOREINSTELLUNG.indexOf(a.kennung) !== -1;\n        zeile.appendChild(kasten);\n        zeile.appendChild(el('span', 'color: var(--text-primary, #e8e8ee); font-size: 0.88rem;', T['a_' + a.kennung]));\n        aufgabenFeld.appendChild(zeile);\n    });<\/p>\n<p>    function codeZeile(kasten, text, farbe) {\n        kasten.appendChild(el('pre', 'background: var(--bg-panel, #1e1e24); border: 1px solid var(--border, #2a2a35); color: ' + (farbe || 'var(--text-primary, #e8e8ee)') + '; padding: 10px 12px; border-radius: 5px; overflow-x: auto; font-family: monospace; font-size: 0.8rem; white-space: pre-wrap; word-break: break-all; margin: 4px 0 10px;', text));\n    }<\/p>\n<p>    btn.addEventListener('click', function () {\n        const aufgaben = {};\n        AUFGABEN.forEach(function (a) {\n            const knoten = document.getElementById('wc-a-' + a.kennung);\n            aufgaben[a.kennung] = knoten ? knoten.checked : false;\n        });<\/p>\n<p>        const erg = bauen({\n            pfad: wert('wc-pfad'),\n            praefix: wert('wc-praefix'),\n            revisionen: wert('wc-revisionen'),\n            aufgaben: aufgaben\n        });<\/p>\n<p>        out.textContent = '';\n        if (!erg.ok) {\n            out.appendChild(el('div', 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-left: 3px solid #ffb86c; color: var(--text-secondary, #a0a0b0); padding: 14px; border-radius: 6px;', erg.fehler));\n            return;\n        }<\/p>\n<p>        out.appendChild(el('div', UEBERSCHRIFT, T.h_sicherung));\n        const sicherung = el('div', KASTEN);\n        codeZeile(sicherung, erg.sicherung, 'var(--accent, #7ee787)');\n        sicherung.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.85rem;', T.sicherung_erklaerung));\n        out.appendChild(sicherung);<\/p>\n<p>        out.appendChild(el('div', UEBERSCHRIFT, T.h_schritte));\n        erg.schritte.forEach(function (s, i) {\n            const kasten = el('div', KASTEN);\n            kasten.appendChild(el('div', 'color: var(--text-primary, #e8e8ee); font-weight: 700; font-size: 0.9rem; margin-bottom: 6px;', (i + 1) + '. ' + s.name));\n            if (s.zaehlen) {\n                kasten.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.8rem;', T.zuerst_zaehlen));\n                codeZeile(kasten, s.zaehlen);\n            }\n            kasten.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.8rem;', T.dann_loeschen));\n            codeZeile(kasten, s.befehl);\n            out.appendChild(kasten);\n        });<\/p>\n<p>        if (erg.konstante) {\n            out.appendChild(el('div', UEBERSCHRIFT, T.h_konstante));\n            const kasten = el('div', KASTEN);\n            codeZeile(kasten, erg.konstante);\n            kasten.appendChild(el('div', 'color: var(--text-secondary, #a0a0b0); font-size: 0.85rem;', T.konstante_erklaerung));\n            out.appendChild(kasten);\n        }<\/p>\n<p>        out.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        const befunde = el('div', KASTEN);\n        erg.befunde.forEach(function (b) {\n            const z = el('div', 'display: flex; gap: 10px; padding: 5px 0;');\n            z.appendChild(el('span', 'color: ' + (b.schwer ? '#ffb86c' : 'var(--text-secondary, #a0a0b0)') + '; font-family: monospace;', b.schwer ? '!' : '-'));\n            z.appendChild(el('span', 'color: var(--text-secondary, #a0a0b0); font-size: 0.9rem; line-height: 1.5;', b.text));\n            befunde.appendChild(z);\n        });\n        out.appendChild(befunde);\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sk\u0142ada polecenia WP-CLI do uporz\u0105dkowania bazy danych, przed ka\u017cdym usuni\u0119ciem stawia policzenie i nazywa to, czego dany krok nie przywr\u00f3ci.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92262,92421,92286],"class_list":["post-10276","page","type-page","status-publish","hentry","tag-mysql-pl","tag-server-administration-pl","tag-wordpress-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Sk\u0142ada polecenia WP-CLI do uporz\u0105dkowania bazy danych, przed ka\u017cdym usuni\u0119ciem stawia policzenie i nazywa to, czego dany krok nie przywr\u00f3ci.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/wp-cli-database-cleanup-builder\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/wp-cli-database-cleanup-builder\\\/\",\"name\":\"Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-14T23:07:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/wp-cli-database-cleanup-builder\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/wp-cli-database-cleanup-builder\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/wp-cli-database-cleanup-builder\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/","og_locale":"en_US","og_type":"article","og_title":"Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy - Lukas Wojcik - Blog","og_description":"Sk\u0142ada polecenia WP-CLI do uporz\u0105dkowania bazy danych, przed ka\u017cdym usuni\u0119ciem stawia policzenie i nazywa to, czego dany krok nie przywr\u00f3ci.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/","name":"Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-14T23:07:31+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/wp-cli-database-cleanup-builder\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-3\/"},{"@type":"ListItem","position":3,"name":"Kreator polece\u0144 WP-CLI do porz\u0105dkowania bazy"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10276"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10276\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10276"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}