/ / Eksportowanie Ghosta do Wordpressa - json, wordpress, parsowanie

Eksportowanie Ducha do Wordpressa - json, wordpress, parsowanie

Szukałem możliwości skopiowania moich postów Ghost Blog do Wordpress.

Do tej pory udało mi się wyeksportować wszystkie dane o duchach do pliku JSON - czy znasz jakieś istniejące narzędzie do konwersji na coś, co Wordpress może zaimportować?

Jeśli nie, a ja muszę coś zbudować, czy poleciłbyś parsowanie JSON do pliku WXR lub podobnego, czy raczej zaimportować bezpośrednio do DB Wordpress?

Z góry dziękuję! K.

Odpowiedzi:

2 dla odpowiedzi № 1

Moją rekomendacją byłoby użyć Google Refine aby zaimportować JSON i wyeksportować plik CSV, a następnie użyj WP Ultimate CSV Importer Plugin aby zaimportować go do swojej witryny WordPress. Mam nadzieję że to pomoże.


3 dla odpowiedzi № 2

Migrowałem blog Ghost do Wordpress, czytając eksport Ghost JSON, trochę go masując i używając wp_insert_post aby zaimportować posty.

Ten kod należy umieścić w pliku functions.php motywu - możesz wyeksportować swoje posty Ghost (GhostData.json) pod adresem http://example.com/ghost/debug/.

Uwaga: poniższy przykład nie importuje wszystkich danych, ale większość kluczowych pól.

/**
*  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 dla odpowiedzi № 3

Pytanie jest dość stare, ale od 2017 roku nadal nie byłem w stanie znaleźć rozwiązania dla migracji Ghost> WP posty. To, co zrobiłem, to:

  1. Eksportuj dane JSON, jak opisano tutaj - https://help.ghost.org/hc/en-us/articles/224112927-Import-Export-Data
  2. Zmień kilka pól JSON, takich jak tytuł, znacznik ... na post_title i post_content itp. (Lista pól postów WP znajduje się tutaj - https://codex.wordpress.org/Class_Reference/WP_Post) i usuń kilka niepotrzebnych, takich jak update_at lub amp. Zostałem z:

    ID

    post_title

    post_name

    Treść postu

    post_status

    meta_title

    opis meta

    post_author

    Data wysłania

  3. Usuń inne pola / strukturę JSON, aby były tylko „posty”: []

  4. Posługiwać się Konwerter JSON na CSV, jak ten - https://konklone.io/json/ i pobierz plik wynikowy CSV.

  5. Teraz, gdy masz plik CSV, zainstaluj WordPress Wtyczka importera CSV - https://wordpress.org/plugins/wp-ultimate-csv-importer/ (lub podobne)
  6. Prześlij plik CSV do importera, sprawdź, czy pola są poprawnie wybrane.
  7. Korzystaj z importowanych postów na pulpicie nawigacyjnym WP;)

Ogłoszenie:

  1. Ghost nie umożliwia eksportowania obrazu z innymi danymi (stan na 31.01.2017).

  2. Możesz zmienić „post_status” z „publikuj” na „w toku”, więc posty nie są publikowane od razu, zanim odpowiednio je edytujesz;)