/ / Exportieren von Ghost nach Wordpress - JSON, WordPress, Parsing

Exportieren von Ghost nach Wordpress - JSON, WordPress, Parsing

Ich habe nach einer Möglichkeit gesucht, meine Ghost-Blog-Beiträge in Wordpress zu kopieren.

Bisher habe ich es geschafft, alle Geisterdaten in eine JSON-Datei zu exportieren. Kennen Sie ein vorhandenes Tool, um sie in etwas zu konvertieren, das Wordpress importieren kann?

Wenn nicht, und ich muss selbst etwas bauen, würden Sie empfehlen, den JSON-Code in eine WXR-Datei oder ähnliches zu analysieren oder direkt in Wordpress "DB" zu importieren?

Danke im Voraus! K.

Antworten:

2 für die Antwort № 1

Meine Empfehlung wäre zu verwenden Google Refine Verwenden Sie zum Importieren des JSON und Exportieren einer CSV WP Ultimate CSV Importer Plugin um es in Ihre WordPress-Site zu importieren. Hoffe das hilft.


3 für die Antwort № 2

Ich habe ein Ghost-Blog nach Wordpress migriert, indem ich den Ghost-JSON-Export gelesen, ein wenig massiert und verwendet habe wp_insert_post um die Beiträge zu importieren.

Dieser Code sollte in der Datei functions.php Ihres Themas abgelegt sein - Sie können Ihre Ghost-Posts (GhostData.json) unter exportieren http://example.com/ghost/debug/.

Hinweis: Das folgende Beispiel importiert nicht alle Daten, sondern die meisten Schlüsselfelder.

/**
*  A function used to programmatically create a post in WordPress.
*
*  http://tommcfarlin.com/programmatically-create-a-post-in-wordpress/
*
*  @returns post ID if successful
*           -1 if the post was never created
*           -2 if a post with the same title exists
*/
function create_wp_post ($post_details) {
// Initialize the page ID to -1. This indicates no action has been taken.
$post_id = -1;

$post = get_page_by_title($post_details["title"], "OBJECT", "post");

// If the page title doesn"t already exist, then insert the post
if (is_null($post)) {
// Set the post ID so that we know the post was created successfully
$post_id = wp_insert_post(
array(
"comment_status"    =>  "closed",
"ping_status"       =>  "closed",
"post_author"       =>  $post_details["author"],
"post_content"      =>  $post_details["content"],
"post_date"         =>  $post_details["date"],
"post_date_gmt"     =>  $post_details["date_gmt"],
"post_name"         =>  $post_details["slug"],
"post_status"       =>  $post_details["status"],
"post_title"        =>  $post_details["title"],
"post_type"         =>  "post",
"tags_input"        =>  $post_details["tags_input"]
)
);
// Page title already exists, return error
} else {
$post_id = -2;
}
}

/**
*  A function used to filter Ghost blog posts into Wordpress format.
*/
function filter_ghost_posts () {
$posts = json_decode(file_get_contents("GhostData.json"), true);

if ($posts) {
foreach ($posts["data"]["posts"] as $post) {
$post_details = array(
"author"        => $post["author_id"],
"date"          => date("Y-m-d H:i:s", $post["published_at"] / 1000),
"date_gmt"      => gmdate("Y-m-d H:i:s", $post["published_at"] / 1000),
"id"            => $post["id"],
"content"       => $post["html"],
"status"        => $post["status"],
"slug"          => $post["slug"],
"title"         => $post["title"]
);

// Status
// Fix discrepancy in naming between Ghost and Wordpress
if ($post_details["status"] === "published") {
$post_details["status"] = "publish";
}

// Tags
$post_tags_list = [];

foreach ($posts["data"]["posts_tags"] as $post_tags) {
if ($post["id"] === $post_tags["post_id"]) {
$post_tags_id = $post_tags["tag_id"];
array_push($post_tags_list, $posts["data"]["tags"][$post_tags_id]["name"]);
}
}

if (count($post_tags_list) > 0) {
$post_details["tags_input"] = implode(",", $post_tags_list);
}

$post_id = create_wp_post($post_details);

if ($post_id == -1 || $post_id == -2) {
// Error handling here
}
}
}
}

add_filter("after_setup_theme", "filter_ghost_posts");

0 für die Antwort № 3

Die Frage ist ziemlich alt, aber seit 2017 konnte ich keine Lösung für die Migration von Ghost> WP-Posts finden. Was ich getan habe, ist:

  1. JSON-Daten exportieren, wie hier beschrieben - https://help.ghost.org/hc/en-us/articles/224112927-Import-Export-Data
  2. Ändern Sie einige JSON-Felder wie title, markdown ... in post_title und post_content usw. (Liste der WP-Post-Felder hier - https://codex.wordpress.org/Class_Reference/WP_Post), und entfernen Sie einige nicht benötigte, wie update_at oder amp. Was ich mit verlassen habe, war:

    ICH WÜRDE

    post_title

    Anschriftname

    post_content

    Poststatus

    Meta-Titel

    meta_description

    post_author

    nach Datum

  3. Entfernen Sie andere JSON-Felder / -Strukturen, sodass "nur" Posts "vorhanden sind: []

  4. Benutzen JSON zu CSV Konverter, wie dieser - https://konklone.io/json/ und laden Sie die CSV-Ergebnisdatei herunter.

  5. Wenn Sie jetzt eine CSV-Datei haben, installieren Sie WordPress CSV Importer Plugin - https://wordpress.org/plugins/wp-ultimate-csv-importer/ (oder ähnliches)
  6. Laden Sie die CSV-Datei in den Importer hoch und prüfen Sie, ob die Felder korrekt ausgewählt sind.
  7. Viel Spaß mit den importierten Beiträgen auf deinem WP-Dashboard;)

Beachten:

  1. Ghost ermöglicht den Export von Bildern mit anderen Daten nicht (Stand: 31.01.2017).

  2. Möglicherweise möchten Sie "post_status" von "Veröffentlichen" in "Ausstehend" ändern, sodass Posts nicht sofort veröffentlicht werden, bevor Sie sie ordnungsgemäß bearbeiten.