Valeurs meta
En savoir plus dans le guide Travailler avec les valeurs meta.
Voici des exemples de requêtes pour récupérer des métadonnées et filtrer les résultats par meta.
Interroger les meta
Récupérer la valeur meta unique _thumbnail_id des posts :
{
posts {
id
title
metaValue(key: "_thumbnail_id")
}
}Récupérer le tableau de valeurs meta upvotes des commentaires :
{
comments {
id
content
upvotes: metaValues(key: "upvotes")
}
}Filtrer par meta
Filtrer les posts dans lesquels la clé meta _thumbnail_id existe :
{
posts(filter: {
metaQuery: {
key: "_thumbnail_id",
compareBy:{
key: {
operator: EXISTS
}
}
}
}) {
id
title
metaValue(key: "_thumbnail_id")
}
}Filtrer les utilisateurs dont l'entrée meta nickname a une certaine valeur :
{
users(filter: {
metaQuery: {
key: "nickname",
compareBy:{
stringValue: {
value: "leo"
operator: EQUALS
}
}
}
}) {
id
name
metaValue(key: "nickname")
}
}Filtrer les commentaires dont l'entrée meta upvotes (qui est un tableau d'entiers) a les valeurs 4 ou 5 :
{
comments(filter: {
metaQuery: [
{
relation: OR
key: "upvotes",
compareBy: {
arrayValue: {
value: 4
operator: IN
}
}
},
{
key: "upvotes",
compareBy: {
arrayValue: {
value: 5
operator: IN
}
}
}
]}) {
id
content
upvotes: metaValues(key: "upvotes")
}
}Ajouter des meta
Vous pouvez ajouter des entrées meta à des custom posts, des étiquettes, des catégories, des commentaires et des utilisateurs.
Cette requête ajoute une entrée meta au post avec l'ID 4 :
mutation {
addCustomPostMeta(input: {
id: 4
key: "some_key"
value: "Some value"
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
customPost {
id
metaValue(key: "some_key")
}
}
}Cette requête ajoute la même clé meta avec des valeurs différentes à différents posts, en bloc :
mutation {
addCustomPostMetas(inputs: [
{
id: 4
key: "some_key"
value: "Some value"
},
{
id: 5
key: "some_key"
value: "Some other value"
},
{
id: 6
key: "some_key"
value: "Yet another value"
}
]) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
customPost {
id
metaValue(key: "some_key")
}
}
}Mettre à jour des meta
Mettre à jour une entrée meta de catégorie :
mutation {
updateCategoryMeta(input: {
id: 20
key: "_source"
value: "Updated source value"
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
category {
__typename
id
metaValue(key: "_source")
}
}
}Cette requête utilise des mutations imbriquées pour mettre à jour une valeur meta dans un post :
mutation {
post(by: {id: 1}) {
updateMeta(input: {
key: "some_key"
value: "Updated description"
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
metaValue(key: "single_meta_key")
}
}
}
}Supprimer des meta
Supprimer une entrée meta d'un post :
mutation {
deletePostMeta(input: {
id: 5
key: "some_key"
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
metaValue(key: "some_key")
}
}
}Supprimer la même entrée meta de plusieurs posts :
mutation {
deletePostMetas(inputs: [
{
id: 5
key: "some_key"
},
{
id: 6
key: "some_key"
}
]) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
metaValue(key: "some_key")
}
}
}Définir plusieurs entrées meta en une seule fois
Vous pouvez définir plusieurs entrées meta en une seule fois en passant un JSON aux différentes mutations set{Entity}Meta :
mutation {
setCustomPostMeta(input: {
id: 4
entries: {
single_meta_key: [
"This is a single entry",
],
object_meta_key: [
{
key: "This is a key",
value: "This is a value",
},
],
array_meta_key: [
"This is a string",
"This is another string",
],
object_array_meta_key: [
[
{
key: "This is a key 1",
value: "This is a value 1",
},
{
key: "This is a key 2",
value: "This is a value 2",
},
]
],
}
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
customPost {
id
meta(keys: ["single_meta_key", "object_meta_key", "array_meta_key", "object_array_meta_key"])
}
}
}Définir des entrées meta lors de la création/mise à jour d'une entité
Vous pouvez définir des entrées meta directement lors de la création ou de la mise à jour d'un custom post, d'une étiquette, d'une catégorie ou d'un commentaire, via le paramètre meta.
Cette requête définit des meta lors de l'ajout d'un commentaire :
mutation {
addCommentToCustomPost(input: {
customPostID: 1130
commentAs: { html: "New comment" }
meta: {
some_meta_key: [
"This is a single entry",
],
another_meta_key: [
"This is an array entry 1",
"This is an array entry 2",
],
}
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
comment {
id
meta(keys: ["some_meta_key", "another_meta_key"])
}
}
}Cette requête injecte les meta dans la mutation imbriquée Post.update :
mutation {
post(by: {id: 1}) {
update(input: {
meta: {
single_meta_key: [
"This is an updated value",
]
}
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
metaValue(key: "single_meta_key")
}
}
}
}