Requêter les données WordPress
Requêter les données WordPressEntrées personnalisées

Entrées personnalisées

En savoir plus dans le guide Travailler avec les entrées personnalisées.

Voici des exemples de requêtes pour récupérer des données d'entrées personnalisées.

CPTs mappés au schéma

Récupérer des entrées personnalisées avec les CPTs "post" et "page" :

query {
  customPosts(filter: { customPostTypes: ["post", "page"] }) {
    ...CustomPostProps
    ...PostProps
    ...PageProps
  }
}
 
fragment CustomPostProps on CustomPost {
  __typename
  title
  excerpt
  url
  dateStr(format: "d/m/Y")
}
 
fragment PostProps on Post {
  tags {
    id
    name
  }
}
 
fragment PageProps on Page {
  author {
    id
    name
  }
}

CPTs non mappés au schéma

Récupérer des entrées personnalisées pour une variété de CPTs (qui doivent être activés pour être interrogeables via les Réglages) :

query {
  customPosts(
    filter:{
      customPostTypes: [
        "page",
        "nav_menu_item",
        "wp_block",
        "wp_global_styles"
      ]
    }
  ) {
    ... on CustomPost {
      id
      title
      customPostType
      status
    }
    __typename
  }
}

Filtrer les CPTs par une taxonomie personnalisée

Récupérer des entrées personnalisées en filtrant par catégorie :

query {
  customPosts(
    filter: {
      categories: {
        includeBy: {
          ids: [26, 28]
        }
        taxonomy: "product-cat"
      }
    }
  ) {
    ... on CustomPost {
      id
      title
    }
    ... on GenericCustomPost {
      categories(taxonomy: "product-cat") {
        id
      }
    }
  }
}

Créer des entrées personnalisées

Pour créer des CPTs qui ne nécessitent aucun champ supplémentaire par rapport à ceux d'une Post, vous pouvez utiliser la mutation createCustomPost.

Cette requête crée une entrée pour le CPT "my-portfolio" :

mutation {
  createCustomPost(
    input: {
      customPostType: "my-portfolio"
      title: "My photograph"
      contentAs: { html: "This is my photo, check it out." }
    }
  ) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
      ...on GenericErrorPayload {
        code
      }
    }
    customPost {
      __typename
      ...on CustomPost {
        id
        title
        content
      }
    }
  }
}

Mettre à jour des entrées personnalisées

Cette requête met à jour le titre et le contenu pour le CPT "my-portfolio" :

mutation {
  updateCustomPost(input: {
    id: 1
    customPostType: "my-portfolio"
    title: "Updated title"
    contentAs: { html: "Updated content" }
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    customPost {
      __typename
      ...on CustomPost {
        id
        title
        content
      }
    }
  }
}

Ou en utilisant des mutations imbriquées :

mutation {
  customPost(by: { id: 1 }, customPostTypes: "my-portfolio") {
    originalTitle: title
    update(input: {
      title: "This is my new title",
      contentAs: { html: "This rocks!" }
    }) {
      status
      errors {
        __typename
        ...on ErrorPayload {
          message
        }
      }
      customPost {
        __typename
        ...on CustomPost {
          id
          newTitle: title
          content
        }
      }
    }
  }
}