WordPress MySQL – alle benutzerdefinierten Beitragstypen löschen
Lesezeit: 2 Minuten
Charlie Mc
Ich habe ein WordPress/Mysql mit dem „benutzerdefinierten Beitragstyp“ eingerichtet, der derzeit etwa 40.000 Datenzeilen in der wp_posts-Tabelle der Datenbank enthält. Ich versuche, an einer SQL-Abfrage zu arbeiten, die alle Zeilen eines bestimmten benutzerdefinierten Beitragstyps auf einmal entfernt, aber es sagt mir immer wieder, dass ich einen Syntaxfehler habe. Der Code, den ich verwende, ist unten, entschuldigen Sie, wenn es einfach ist, aber SQL ist mir fremd und ich habe Mühe, etwas in den Foren zu finden.
DELETE FROM `wp_posts`
WHERE `post_type` = 'prefix-numberplates'
LIMIT 0 , 3000
Es gibt ` um wp_posts & post_type, aber ich kann sie hier nicht stylen. Jede Hilfe wird sehr geschätzt.
Die Abfrage sieht gut aus. Was ist Ihre Fehlermeldung? Wenn Sie dies über die Befehlszeile tun, haben Sie use <databasename> Erste?
– Rauben
21. Juli 2012 um 2:31 Uhr
global $wpdb;
// delete all posts by post type.
$sql="DELETE `posts`, `pm`
FROM `" . $wpdb->prefix . 'posts` AS `posts`
LEFT JOIN `' . $wpdb->prefix . 'postmeta` AS `pm` ON `pm`.`post_id` = `posts`.`ID`
WHERE `posts`.`post_type` = \'prefix-numberplates\'';
$result = $wpdb->query($sql);
Dadurch werden sowohl Beiträge als auch die Postmeta-Tabelle gelöscht. Es hinterließ keinen Müll in db.
Gelöst –
DELETE FROM `wp_posts`
WHERE `post_type` = 'prefix-numberplates'
funktionierte – unteres Teil raus und gut.
Sie entfernen das Post-Meta nicht, indem Sie diese Abfrage ausführen, Sie hinterlassen eine Menge Müll in Ihrer Datenbank.
– Barry Kooij
25. März 2014 um 11:26 Uhr
Folgendes wird aus den Tabellen posts, postmeta und term_relationships entfernt:
DELETE p,tr,pm
FROM wp_posts p
LEFT JOIN wp_term_relationships tr
ON (p.ID = tr.object_id)
LEFT JOIN wp_postmeta pm
ON (p.ID = pm.post_id)
WHERE p.post_type="post_type_name";
Ändern Sie einfach „post_type_name“ in den CPT, den Sie entfernen möchten. Ändern Sie gegebenenfalls auch die Tabellennamenpräfixe.
Auf diese Weise stellen Sie sicher, dass Sie die richtige Tabelle erhalten – $wpdb weiß es am besten 🙂
// delete CPT posts ##
global $wpdb;
$posts_table = $wpdb->posts;
$query = "
DELETE FROM {$posts_table}
WHERE post_type="post_type_name"
";
$wpdb->query($query);
delete p,m from wp_posts p left join wp_postmeta m on p.ID = m.post_id where p.post_type = "my_custom_post_type"
Scully
Versuchen Sie es mit der $wpdb-Klasse.
$query = "
DELETE FROM wp_posts
WHERE post_type="prefix-numberplates"
LIMIT 0, 3000
";
$wpdb->query($query);
11758800cookie-checkWordPress MySQL – alle benutzerdefinierten Beitragstypen löschenyes
Die Abfrage sieht gut aus. Was ist Ihre Fehlermeldung? Wenn Sie dies über die Befehlszeile tun, haben Sie
use <databasename>
Erste?– Rauben
21. Juli 2012 um 2:31 Uhr