Queries-Bibliothek
Queries-BibliothekBeitrag aus WordPress-RSS-Feed importieren

Beitrag aus WordPress-RSS-Feed importieren

Diese Query importiert einen Beitrag aus einem WordPress-RSS-Feed und verwendet dabei Titel, Inhalt und Auszug des Beitrags.

Wenn der Autor mit diesem Benutzernamen lokal vorhanden ist, wird er verwendet; andernfalls wird er durch den in der Variable $defaultAuthorUsername definierten Autor ersetzt.

Die Variable $url empfängt die URL des RSS-Feeds eines einzelnen WordPress-Beitrags. Diese entspricht in der Regel der Blog-Beitrags-URL + "/feed/rss/?withoutcomments=1". Zum Beispiel:

https://wordpress.com/blog/2024/07/16/wordpress-6-6/feed/rss/?withoutcomments=1
query 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
    }
  }
}