Query-bibliotheekImporteer nieuwe berichten van WordPress RSS-feed
Importeer nieuwe berichten van WordPress RSS-feed
Deze query importeert alle nieuwe berichten van een WordPress RSS-feed, met gebruik van de titel, inhoud en samenvatting van het bericht.
De nieuwe berichten zijn die welke in de afgelopen 24 uur zijn aangemaakt (instelbaar via variabele). Voer deze persisted query uit met een dagelijkse automatiseringstaak om automatisch alle nieuwe berichten van de andere site te importeren.
Variabele $url ontvangt de URL van de RSS-feed van het WordPress-berichtenarchief. Dit is meestal de URL van het berichtenarchief + "/feed/rss/?withoutcomments=1". Bijv.:
https://wordpress.com/blog/feed/rss/?withoutcomments=1Variabele $timeDeltaInSeconds geeft aan vanaf wanneer een bericht als nieuw beschouwd wordt. Standaard is dit 86400 seconden (d.w.z. één dag).
query GetTime(
$timeDeltaInSeconds: Int! = 86400
) {
now: _time
newPostsStartTime: _intSubtract(
from: $__now
subtract: $timeDeltaInSeconds,
)
@export(as: "newPostsStartTime")
}
query GetPostsFromRSSFeedAndExportData(
$url: URL!
)
@depends(on: "GetTime")
{
_sendHTTPRequest(input: {
url: $url,
method: GET
}) {
body
rssJSON: _strDecodeXMLAsJSON(
xml: $__body
alwaysArrayTagNames: [
"item",
],
)
@export(as: "rssJSON")
}
}
query CreatePostInputsFromRSSFeed
@depends(on: "GetPostsFromRSSFeedAndExportData")
{
items: _objectProperty(
object: $rssJSON,
by: { path: "rss.channel.item" }
)
inputs: _echo(value: $__items)
@underEachArrayItem(
passValueOnwardsAs: "item"
affectDirectivesUnderPos: [1, 2, 3, 4, 6]
)
@applyField(
name: "_objectProperty"
arguments: {
object: $item
by: { key: "pubDate" }
}
passOnwardsAs: "dateAsString"
)
@applyField(
name: "_strToTime",
arguments: {
string: $dateAsString
},
passOnwardsAs: "date"
)
@applyField(
name: "_greaterThanOrEquals",
arguments: {
value1: $date,
value2: $newPostsStartTime
},
passOnwardsAs: "isNewPost"
)
@unless(
condition: $isNewPost
)
@setNull
@if(
condition: $isNewPost
affectDirectivesUnderPos: [1, 2, 3, 4]
)
@applyField(
name: "_objectProperty"
arguments: {
object: $item
by: { key: "title" }
}
passOnwardsAs: "title"
)
@applyField(
name: "_objectProperty"
arguments: {
object: $item
by: { key: "content:encoded" }
}
passOnwardsAs: "content"
)
@applyField(
name: "_objectProperty"
arguments: {
object: $item
by: { key: "description" }
}
passOnwardsAs: "excerpt"
)
@applyField(
name: "_echo",
arguments: {
value: {
status: draft,
contentAs: {
html: $content
},
excerpt: $excerpt
title: $title
}
},
setResultInResponse: true
)
@arrayFilter
@export(as: "inputs")
}
mutation ImportNewPostsFromWordPressRSSFeed
@depends(on: "CreatePostInputsFromRSSFeed")
{
createPosts(inputs: $inputs) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
slug
date
status
content
excerpt
title
}
}
}