Libreria di queriesImportare HTML da URL come nuovi post in WordPress
Importare HTML da URL come nuovi post in WordPress
Questa query importa le pagine HTML degli URL indicati come nuovi post in WordPress.
Per ogni URL, recupera il titolo da <title>...</title> nel meta, e il contenuto da <body>...</body>, oppure personalizzato verso uno specifico elemento HTML interno utilizzando la variabile $contentMatchInnerRegex.
Con $contentMatchInnerRegex, possiamo specificare quale sottoparte del HTML del <body> catturare.
Ad esempio, se il contenuto deve essere estratto da:
<article class="main">...</article>...possiamo catturarlo con:
{
"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
}
}
}