- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在寻找将我的 Ghost 博客帖子复制到 Wordpress 的可能性。
到目前为止,我已经设法将所有幻影数据导出到一个 JSON 文件中——您知道任何现有工具可以将其转换为 Wordpress 可以导入的内容吗?
如果没有,并且我必须自己构建一些东西,您会建议将 JSON 解析为 WXR 文件或类似文件,还是直接导入到 Wordpress 的数据库中?
提前致谢!K.
最佳答案
我通过读取 Ghost JSON 导出、稍微修改它并使用 wp_insert_post
导入帖子,将 Ghost 博客迁移到 Wordpress。
此代码应放在主题的 functions.php 文件中 - 您可以在 http://example.com/ghost/debug/ 导出 Ghost 帖子 (GhostData.json) .
注意:下面的示例不会导入所有数据,但会导入大部分关键字段。
/**
* 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');
关于json - 将 Ghost 导出到 Wordpress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24634246/
Ghost 是否存在与 Wordpress 的“帖子类型”和高级自定义字段插件等价的插件? 作为一个例子,我建立了一个旅游网站,它有多个旅行(一种自定义帖子类型),每次旅行都有各种序列化的行程目的地、
我正在尝试使用 Ghost 博客中的“获取帮助程序”按标签获取相关帖子的列表。 我尝试遵循cookbook in Ghost docs按标签获取相关帖子,但似乎某些语法略有变化(我知道这是测试版功能!
我正在尝试使用 Ghost 博客中的“获取帮助程序”按标签获取相关帖子的列表。 我尝试遵循cookbook in Ghost docs按标签获取相关帖子,但似乎某些语法略有变化(我知道这是测试版功能!
有没有什么方法可以使用 api 和 get 助手获取 Ghost 中的所有内部标签? 在我的 post.hbs 模板中,我可以这样做并且有效: {{#post}} {{#foreach tags
是否有机会运行 Ghost blogging platform 的单个安装为可在许多不同的顶级域或子域下访问的许多博客提供服务? 我尝试过browse source code , Ghost's fo
我正在为 https://ghost.org/ 在本地开发一个主题 我遇到了很多问题。 但是没有日志。我不知道为什么会失败。 是否有任何选项可以在开发时显示日志一个https://ghost.org/
我正在为 https://ghost.org/ 在本地开发一个主题 我遇到了很多问题。 但是没有日志。我不知道为什么会失败。 是否有任何选项可以在开发时显示日志一个https://ghost.org/
在最新版本中,您允许我们在 post slug 中添加日期。是否可以只添加年和月?甚至通过编辑代码?因为我正在尝试从 Wordpress 迁移,所以我需要它。在 WP 中,我使用该格式。 注意:我使用
我在 Windows 10 上安装了 ghost 和 ghost-CLI。当我运行时 ghost start我收到以下错误。如何解决这个问题?它似乎与检查文件和文件夹权限的命令有关。请注意,我在 D:
我正在将 Ghost 平台安装到 Ubuntu 20.4 上。但是,存在阻止应用程序启动的身份验证模式错误。 有谁知道这是要求修复什么?该系统符合技术先决条件。我也大部分时间使用 Virtualmin
我有一台 CentOS 7 机器,带有 mysql 服务器和 nginx。我使用 yum install Nodejs 和 Ghost-cli 安装了 NodeJS。 我想用 Ghost-cli 安装
我使用 Ghost 作为博客平台,使用 nginx 作为 ghost 的反向代理,详见文档。 Ghost 安装在一个子目录中,并在域 http://example.com/blog 上提供服务而静态网
使用 Ghost 博客 routes.yaml 文件,可以使用 collections block 来创建由某些标签和/或其他数据组成的自定义集合。您还可以告诉此集合使用自定义主题模板,请参阅: ht
每当我在本地系统中运行脚本时,游标都能正常工作,当我在docker中运行时,我获取了一个错误,所以任何人都会告诉我哪里出了问题,或者这个问题是不是包端的问题。。当我在当地跑的时候,我无头:假,当时无头
我刚开始使用Jetpack Compose,我有这个问题。我有一个LazyVerticalGrid,它是从FireStore数据库中获取的列表填充的,当我通过应用程序删除一个项目时,视图会更新,删除的
在安装Win7系统的时候,有非常多的版本可以选择,不少用户都会看花眼,经常出现的是ghost win7这个版本,ghost win7是什么意思?ghost win7和win7原版有什么区别呢?下面小
通常,BIOS损坏的电脑是完全无法启动引导的,用户没办法自行恢复,但在具备GHOST BIOS 功能的主板上,系统会在EP1308芯片的引导下进行“EPoX GHOST BIOS Recovery
我无法让我的自定义错误页面正常工作。我已按照 http://docs.ghost.org/themes/ 上的说明进行操作并在我的主题根目录中添加了一个 error.hbs 模板。这个模板中的代码非常
运行此命令时出现错误: npm install --production 请帮忙。 npm ERR! install Couldn't read dependencies npm ERR! packa
我已成功安装新的博客平台Ghost在我的 MediaTemple VPS 服务器上。它工作正常,但我在配置端口号时遇到问题。您会看到,我在 VPS 上托管了大约 10 个域,因此我必须始终启用 Apa
我是一名优秀的程序员,十分优秀!