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