ไลบรารี Queriesนำเข้า HTML จาก URL เป็นโพสต์ใหม่ใน WordPress
นำเข้า HTML จาก URL เป็นโพสต์ใหม่ใน WordPress
query นี้นำเข้าหน้า HTML จาก URL ที่กำหนดเป็นโพสต์ใหม่ใน WordPress
จากแต่ละ URL จะดึงชื่อเรื่องจาก <title>...</title> ในส่วน meta และดึงเนื้อหาจาก <body>...</body> หรือปรับแต่งให้เจาะจงไปยังองค์ประกอบ HTML ภายในที่ต้องการได้โดยใช้ตัวแปร $contentMatchInnerRegex
ด้วย $contentMatchInnerRegex เราสามารถกำหนดได้ว่าจะจับส่วนย่อยใดของ HTML ใน <body>
ตัวอย่างเช่น หากต้องดึงเนื้อหาจาก:
<article class="main">...</article>...เราสามารถจับได้ด้วย:
{
"contentMatchInnerRegex": ".*?<\\s*?article\\b[^>]*>(.*?)<\\/article\\b[^>]*>.*?"
}query GenerateURLInputs(
$urls: [URL!]!
$contentMatchInnerRegex: String! = "(.*?)"
) {
urlInputs: _echo(value: $urls)
@underEachArrayItem(
passValueOnwardsAs: "url"
)
@applyField(
name: "_echo",
arguments: {
value: {
url: $url,
method: GET
}
},
setResultInResponse: true
)
@export(as: "urlInputs")
@remove
contentMatchRegex: _sprintf(
string: "/(?:<!DOCTYPE html>)?<\\s*?html\\b[^>]*>.*?<\\s*?body\\b[^>]*>%s<\\/body\\b[^>]*>.*?<\\/html\\b[^>]*>/sim",
values: [$contentMatchInnerRegex]
)
@export(as: "contentMatchRegex")
}
query RequestPages
@depends(on: "GenerateURLInputs")
{
urlContents: _sendHTTPRequests(inputs: $urlInputs, async: false) {
statusCode
body
@remove
title: _strRegexReplace(
searchRegex: "/(?:<!DOCTYPE html>)?<\\s*?html\\b[^>]*>.*?<head\\b[^>]*>.*?<\\s*?title\\b[^>]*>(.*?)<\\/title\\b[^>]*>.*?<\\/head\\b[^>]*>(.*?)<\\/html\\b[^>]*>/sim"
replaceWith: "$1"
in: $__body
)
content: _strRegexReplace(
searchRegex: $contentMatchRegex
replaceWith: "$1"
in: $__body
)
createPostInput: _echo(value: {
status: publish,
title: $__title
contentAs: {
html: $__content
}
})
@export(as: "createPostInputs", type: LIST)
}
}
mutation CreatePostsFromURLs
@depends(on: "RequestPages")
{
createPosts(inputs: $createPostInputs) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
status
title
content
}
}
}