Requêter les données WordPress
Requêter les données WordPressValeurs meta

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") 
      }
    }
  }
}
Next