Запрос данных WordPress
Запрос данных WordPressМедиафайлы

Медиафайлы

Это примеры queries для получения и изменения медиаданных.

Получение медиафайлов

Медиаэлемент с источником изображения в разных размерах:

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

Все медиаэлементы (по умолчанию с mime type «image») и все размеры изображений:

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

Главное изображение постов:

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

Фильтрация медиаэлементов:

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

Получение видео- и аудиоэлементов:

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

Получение медиафайлов вошедшего пользователя

Поля myMediaItemCount, myMediaItems и myMediaItem возвращают медиаэлементы вошедшего в систему пользователя:

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

Установка главного изображения поста

Можно ссылаться на любое изображение, существующее в медиатеке.

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

С вложенными мутациями:

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

Загрузка вложения в медиатеку

Мутация createMediaItem по умолчанию не принимает небезопасные URL.

Прочитайте руководство Создание медиаэлементов из небезопасных URL, чтобы узнать, как изменить это поведение.

Передача 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
    }
  }
}

Передача содержимого вложения напрямую:

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
    }
  }
}

Создание медиаэлемента с повторным использованием прикреплённого файла из другого медиаэлемента:

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
    }
  }
}

Обновление медиаэлемента

Изменение альтернативного текста и подписи изображения:

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