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 № 1Moją 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:
- Eksportuj dane JSON, jak opisano tutaj - https://help.ghost.org/hc/en-us/articles/224112927-Import-Export-Data
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
Usuń inne pola / strukturę JSON, aby były tylko „posty”: []
Posługiwać się Konwerter JSON na CSV, jak ten - https://konklone.io/json/ i pobierz plik wynikowy CSV.
- Teraz, gdy masz plik CSV, zainstaluj WordPress Wtyczka importera CSV - https://wordpress.org/plugins/wp-ultimate-csv-importer/ (lub podobne)
- Prześlij plik CSV do importera, sprawdź, czy pola są poprawnie wybrane.
- Korzystaj z importowanych postów na pulpicie nawigacyjnym WP;)
Ogłoszenie:
Ghost nie umożliwia eksportowania obrazu z innymi danymi (stan na 31.01.2017).
Możesz zmienić „post_status” z „publikuj” na „w toku”, więc posty nie są publikowane od razu, zanim odpowiednio je edytujesz;)