forked from storyblok/wordpress-importer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
migrate-wp-to-storyblok.js
88 lines (85 loc) · 2.29 KB
/
migrate-wp-to-storyblok.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { Wp2Storyblok } from './index.js'
import dotenv from 'dotenv'
dotenv.config()
const storyblokDefaultFields = {
date: 'first_published_at',
title: 'name',
slug: 'slug',
};
const wp2storyblok = new Wp2Storyblok('https://wp2.storyblok.com/wp-json', {
token: process.env.STORYBLOK_API_MANAGEMENT, // My Account > Personal access tokens
space_id: 113181, // Settings
blocks_mapping: [
{
name: 'core/heading',
new_block_name: 'core-heading',
schema_mapping: {
'attrs.level': 'level',
'attrs.content': 'content'
}
},
{
name: 'core/paragraph',
new_block_name: 'core-paragraph',
schema_mapping: {
'attrs.content': 'content'
}
},
{
name: 'core/quote',
new_block_name: 'core-quote',
schema_mapping: {
'attrs.value': 'content'
}
},
{
name: 'core/image',
new_block_name: 'core-image',
schema_mapping: {
'attrs.url': 'image'
}
}
],
content_types: [
{
name: 'pages', // Name of the post type in WP
new_content_type: 'page', // Name of the Content Type in Storyblok
folder: '',
schema_mapping: {
...storyblokDefaultFields,
'_links.wp:featuredmedia.0': 'content.featured_image',
blocks: 'content.body', // Blocks for using the blocks defined at the top
// content: 'content.content' The past rich-text
}
},
{
name: 'categories', // Name of the post type in WP
new_content_type: 'category', // Name of the Content Type in Storyblok
schema_mapping: {
name: 'name',
slug: 'slug',
description: 'content.description',
}
},
{
name: 'posts', // Name of the post type in WP
new_content_type: 'post', // Name of the Content Type in Storyblok
folder: 'articles', // Name of the destination folder in Storyblok
taxonomies: [
{
name: 'categories',
field: 'categories',
type: ''
}
],
schema_mapping: {
...storyblokDefaultFields,
'_links.wp:featuredmedia.0': 'content.featured_image',
excerpt: 'content.excerpt',
categories: 'content.categories',
content: 'content.content',
}
}
],
})
wp2storyblok.migrate()