Zapytania o dane WordPress
Zapytania o dane WordPressMedia

Media

Oto przykłady queries do pobierania i modyfikowania danych multimedialnych.

Pobieranie mediów

Element multimedialny ze źródłem obrazu w różnych rozmiarach:

query {
  mediaItem(by: { id: 1647 }) {
    id
    srcSet
    src
    thumbSizeSrc: src(size: "thumbnail")
    largeSizeSrc: src(size: "large")
  }
}

Wszystkie elementy multimedialne (domyślnie z mime type "image") oraz wszystkie rozmiary obrazów:

query {
  imageSizeNames
  mediaItems {
    id
    srcSet
    src(size: "medium")
    sizes(size: "thumbnail")
    width
    height
    slug
    url
    urlPath
    title
    caption
    altText
    description
    date
    mimeType
  }
}

Wyróżniony obraz postów:

query {
  posts {
    id
    hasFeaturedImage
    featuredImage {
      id
      src
      width
      height
    }
  }
}

Filtrowanie elementów multimedialnych:

{
  mediaItems(
    pagination: { limit: 3 },
    sort: { by: TITLE },
    filter: { dateQuery: { after: "2012-01-02" } }
  ) {
    id
    src
    height
    width
  }
}

Pobieranie elementów wideo i audio:

{
  mediaItems(
    filter: { mimeTypes: ["video", "audio"] }
  ) {
    id
    src
  }
}

Pobieranie elementów multimedialnych zalogowanego użytkownika

Pola myMediaItemCount, myMediaItems i myMediaItem pobierają elementy multimedialne zalogowanego użytkownika:

query GetMediaItems {
  me {
    slug
  }
  
  myMediaItemCount
 
  myMediaItems(pagination: {
    limit: 3
  }) {
    ...MediaItemData
  }
 
  myMediaItem(by: { id: 1380 }) {
    ...MediaItemData
  }
}
 
fragment MediaItemData on Media {
  id
  mimeType
  src
  author {
    slug
  }
}

Ustawianie wyróżnionego obrazu posta

Możemy odwołać się do dowolnego obrazu istniejącego w bibliotece mediów.

mutation {
  setFeaturedImageOnCustomPost(
    input: {
      customPostID: 1499,
      mediaItemID: 1505
    }
  ) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    customPostID
    customPost {
      ...on WithFeaturedImage {
        featuredImage {
          id
          src
        }
      }
    }
  }
}

Z zagnieżdżonymi mutations:

mutation {
  post(by: { id: 1499 }) {
    setFeaturedImage(input: { mediaItemID: 1647 }) {
      status
      errors {
        __typename
        ...on ErrorPayload {
          message
        }
      }
      customPostID
      customPost {
        ...on WithFeaturedImage {
          featuredImage {
            id
            src
          }
        }
      }
    }
  }
}

Przesyłanie załącznika do Biblioteki Mediów

Mutation createMediaItem domyślnie nie akceptuje niezabezpieczonych adresów URL.

Przeczytaj przewodnik Tworzenie elementów multimedialnych z niezabezpieczonych adresów URL, aby dowiedzieć się, jak zmienić to zachowanie.

Przekazując adres URL:

mutation CreateMediaItems {
  fromURL: createMediaItem(input: {
    from: {
      url: {
        source: "https://gatographql.com/assets/GatoGraphQL-logo.webp"
      }
    }
    caption: "Gato GraphQL logo"
    altText: "This is the Gato GraphQL logo"
  }) {
    mediaItemID
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    mediaItem {
      altText
      caption
      mimeType
      slug
      src
      title
    }
  }
}

Przekazując bezpośrednio zawartość załącznika:

mutation CreateMediaItems {
  createMediaItem(input: {
    from: {
      contents: {
        body: """
<html>
  <body>
    Hello world!
  </body>
</html>
        """
        filename: "hello-world.html"
      }
    }
    title: "Hello world!"
  }) {
    mediaItemID
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    mediaItem {
      altText
      caption
      mimeType
      slug
      src
      title
    }
  }
}

Tworzenie elementu multimedialnego z ponownym użyciem załączonego pliku z innego elementu multimedialnego:

mutation CreateMediaItems {
  createMediaItem(input: {
    from: {
      mediaItemBy: {
        id: 1361
      }
    }
    title: "Hello world!"
  }) {
    mediaItemID
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    mediaItem {
      altText
      caption
      mimeType
      slug
      src
      title
    }
  }
}

Aktualizowanie elementu multimedialnego

Zmiana tekstu alternatywnego i podpisu obrazu:

mutation UpdateMediaItem {
  updateMediaItem(input: {
    id: 1380
    caption: "Updated caption"
    altText: "Updated alt text"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    mediaItem {
      altText
      caption
    }
  }
}