Frage

Ich möchte einen benutzerdefinierten Import von einem benutzerdefinierten CMS zu WordPress durchführen. Wenn ich die Export-/Importdateien in WordPress betrachte, kann ich den größten Teil der Struktur übereinstimmen. Es fehlt jedoch die Beziehungen für benutzerdefinierte Taxonomien und Beiträge beim Export/Importieren.

Gibt es eine Lösung dafür oder wäre es einfacher, WordPress -Importskript nicht zu verwenden? Schreiben Sie vielmehr benutzerdefinierte SQL, um alles zu verarbeiten.

Während ich diese neue Site entwickle, wird der Inhalt in der alten Website (benutzerdefinierte CMS) noch aktualisiert. Es wird ein paar Tage vor dem Start ein Einfrieren geben, bei dem ich einen weiteren DB -Dump und eine Neutreinigung durchführen kann. Das Problem, das ich vorherseht, ist jedoch, dass ich alle Beiträge und Beziehungen löschen und den Inhalt neu importieren muss. Gibt es eine einfache Möglichkeit, alle Beiträge und Beziehungen zu löschen, um Duplikate zu verhindern und den Inhalt neu zu importieren?

War es hilfreich?

Lösung

Es sollte nicht schwierig sein, die Handhabung für benutzerdefinierte Post -Typen oder Taxonomien innerhalb eines benutzerdefinierten Importeurs für WordPress hinzuzufügen. Sie müssen nur sicherstellen, dass Ihre benutzerdefinierten Post -Typen und Taxonomien registriert sind, bevor der Importeur ausgeführt wird. Nach der Registrierung können Sie diese benutzerdefinierten Typen wp_insert_post () und wp_set_object_terms () verwenden. Dies wird wahrscheinlich eine viel bessere Lösung sein, als zu versuchen, benutzerdefinierte SQL zu schreiben, da es viele zusätzliche Felder ausfüllt, die nicht immer offensichtlich sind, wie z.

Immer wenn ich an einem Skript arbeite, um Daten aus einem anderen System zu importieren, habe ich immer Nuke -Funktionen erstellt, aus dem Grund, warum Sie erwähnt haben, und nur weil das Importieren von Daten immer eine Reihe von Versuch und Irrtum ist. Die Funktion besteht normalerweise nur aus einer einzelnen Schleife, um wp_delete_post () für jeden Beitrag aufzurufen. Abhängig vom Import kann ich auch einen anderen hinzufügen, um wp_delete_term () für jeden Begriff in der Datenbank aufzurufen.

$post_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type in ('post', 'attachment', [...other post types])");
foreach($post_ids as $post_id) {
    wp_delete_post($post_id, true);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top