Thư viện QueriesNhập bài viết từ RSS feed WordPress
Nhập bài viết từ RSS feed WordPress
Query này nhập một bài viết từ RSS feed WordPress, sử dụng tiêu đề, nội dung và đoạn trích của bài viết.
Nếu tác giả có tên người dùng đó tồn tại cục bộ, hệ thống sẽ sử dụng tác giả đó; nếu không, nó sẽ thay thế bằng tác giả được định nghĩa qua biến $defaultAuthorUsername.
Biến $url nhận URL của RSS feed bài viết WordPress đơn lẻ. Thông thường đó là URL bài viết blog + "/feed/rss/?withoutcomments=1". Ví dụ:
https://wordpress.com/blog/2024/07/16/wordpress-6-6/feed/rss/?withoutcomments=1query GetPostFromRSSFeedAndExportData(
$url: URL!
) {
_sendHTTPRequest(input: {
url: $url,
method: GET
}) {
body
rssJSON: _strDecodeXMLAsJSON(
xml: $__body
alwaysArrayTagNames: [
"category",
],
)
# Fields to be imported
authorUsername: _objectProperty(
object: $__rssJSON,
by: {
path: "rss.channel.item.dc:creator"
}
)
@export(as: "authorUsername")
# categorySlugs: _objectProperty(
# object: $__rssJSON,
# by: {
# path: "rss.channel.item.category"
# }
# )
content: _objectProperty(
object: $__rssJSON,
by: {
path: "rss.channel.item.content:encoded"
}
)
@export(as: "content")
excerpt: _objectProperty(
object: $__rssJSON,
by: {
path: "rss.channel.item.description"
}
)
@export(as: "excerpt")
title: _objectProperty(
object: $__rssJSON,
by: {
path: "rss.channel.item.title"
}
)
@export(as: "title")
}
}
# If the author's username exists in this site, keep it
# Otherwise, use the default one
query CheckAuthorExistsOrChange(
$defaultAuthorUsername: String! = "admin"
)
@depends(on: "GetPostFromRSSFeedAndExportData")
{
existingUserByUsername: user(by: { username: $authorUsername })
{
id
username
}
userExists: _notNull(value: $__existingUserByUsername)
username: _if(
condition: $__userExists,
then: $authorUsername,
else: $defaultAuthorUsername
)
@export(as: "existingAuthorUsername")
}
mutation ImportPostFromWPRSSFeed
@depends(on: "CheckAuthorExistsOrChange")
{
createPost(input: {
status: draft,
authorBy: {
username: $existingAuthorUsername
},
contentAs: {
html: $content
},
excerpt: $excerpt
title: $title
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
slug
date
status
author {
id
username
}
content
excerpt
title
}
}
}