WordPress SQL Löscht benutzerdefinierte Beitragstypen und Meta

Lesezeit: 2 Minuten

Ich habe die folgende SQL-Abfrage, die alle Beiträge eines benutzerdefinierten Beitragstyps, der älter als X Tage ist, abrufen und löschen kann.

SELECT * FROM `wp_posts`
WHERE `post_type` = ‘clothing’
AND DATEDIFF(NOW(), `post_date`) > 2

DELETE * FROM `wp_posts`
WHERE `post_type` = ‘clothing’
AND DATEDIFF(NOW(), `post_date`) > 2

Nach dem, was ich online gelesen habe, scheint es jedoch, dass der obige Code die Metainformationen der Posts nicht wirklich löscht, sodass ich immer noch eine Menge Daten übrig habe.

Meine Frage ist, wie kann ich diesen Code ändern, damit alle zugehörigen Metainformationen auch aus den gelöschten Beiträgen entfernt werden?

Vielen Dank

  • Ich habe den Texteditor von Mac OS mit Nur-Text-Modus verwendet

    – Benutzer2028856

    18. November 2014 um 11:25 Uhr

  • Nun, in diesem Fall deaktivieren Sie “Intelligente Anführungszeichen” unter Bearbeiten > Ersetzungen > Intelligente Anführungszeichen – oder wo immer es heutzutage ist

    – Erdbeere

    18. November 2014 um 11:27 Uhr

Sie können die Daten löschen, indem Sie die Tabellen verbinden. Im WP wp_posts und wp_postmeta sind verwandt mit post_id in dem wp_postmeta Tisch. Mit der folgenden Abfrage werden beide Tabellen gelöscht. Es gibt jedoch auch andere Optionen, dh Sie können nach dem Löschen einen Trigger auslösen wp_posts um die Daten aus der zugehörigen Tabelle oder einer Fremdschlüsseleinschränkung mit on delete cascade zu löschen

delete
p,pm
from wp_posts p
join wp_postmeta pm on pm.post_id = p.id
where p.post_type="clothing"
and DATEDIFF(NOW(), p.post_date) > 2

  • Ich habe diese Abfrage ausprobiert, aber aus irgendeinem Grund sagte mir PHPMyAdmin, dass p, pm zu einem Fehler führt. Ich habe es durch * ersetzt und das hat funktioniert. Wäre das in diesem Fall auch richtig?

    – Benutzer2028856

    18. November 2014 um 11:29 Uhr

  • Fehler ? p und pm sind nur die Alias-Namen und sollten keinen Fehler verursachen, hier ist eine Demo sqlfiddle.com/#!2/507a38

    – Abhik Chakraborty

    18. November 2014 um 11:33 Uhr

  • Entschuldigung, der Fehler wurde verursacht, weil ich delete durch select ersetzt habe. Das funktioniert einwandfrei 🙂

    – Benutzer2028856

    18. November 2014 um 11:34 Uhr

  • Etwas spät, aber für alle anderen, die dies lesen – stellen Sie sicher, dass Sie LEFT JOIN auf wp_postmeta verwenden; Andernfalls bleiben alle Beiträge, denen derzeit keine Metadaten zugeordnet sind, in der Datenbank.

    –versalle88

    29. Januar 2015 um 17:47 Uhr

  • Verwendung nicht vergessen $wpdb->prefix Anstatt von wp_ für den Fall, dass WP ein nicht standardmäßiges Datenbankpräfix verwendet.

    – Juraj. Lorinc

    21. Juli 2020 um 11:41 Uhr

1382950cookie-checkWordPress SQL Löscht benutzerdefinierte Beitragstypen und Meta

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy