Requêter les données des pluginsAdvanced Custom Fields (ACF)
Advanced Custom Fields (ACF)
En savoir plus dans le guide Travailler avec Advanced Custom Fields (ACF).
Exemples de requêtes pour interagir avec les données du plugin Advanced Custom Fields (ACF).
Récupérer les champs personnalisés ACF
Nous pouvons utiliser les champs meta pour interroger les données des champs personnalisés ACF, quel que soit leur type :
query GetPost($postId: ID!) {
post(by: { id: $postId }) {
id
title
# Types de champs de base
text: metaValue(key: "text_field")
textarea: metaValue(key: "textarea_field")
select: metaValue(key: "select_field")
multiSelect: metaValue(key: "multi_select_field")
number: metaValue(key: "number_field")
# Champ de date
dateAsString: metaValue(key: "date_field")
dateYear: _strSubstr(string: $__dateAsString, offset: 0, length: 4)
dateMonth: _strSubstr(string: $__dateAsString, offset: 4, length: 2)
dateDay: _strSubstr(string: $__dateAsString, offset: 6, length: 2)
dateTime: _makeTime(year: $__dateYear, month: $__dateMonth, day: $__dateDay, hour: 0, minute: 0, second: 0)
date: _date(format: "Y-m-d", timestamp: $__dateTime)
}
}Si la valeur meta est une relation (ex. : un article, un utilisateur, une taxonomie, etc.), nous pouvons utiliser la valeur pour interroger l'entité correspondante de type Post, User, Taxonomy, etc. :
query GetPostWithRelationships($postId: ID!) {
post(by: { id: $postId }) {
id
title
# Exporter la relation vers un article
relationshipPostId: metaValue(key: "relationship_post_id")
@export(as: "relationshipPostId")
# Exporter la relation vers une liste d'articles
relationshipPostIds: metaValue(key: "relationship_post_ids")
@export(as: "relationshipPostIds")
}
}
query QueryPostRelationships @depends(on: "GetPostWithRelationships") {
# Interroger la relation vers un article
relationshipPost: post(by: { id: $relationshipPostId }) {
id
title
}
# Interroger la relation vers une liste d'articles
relationshipPosts: posts(filter: { ids: $relationshipPostIds }) {
id
title
}
}Mettre à jour les champs personnalisés ACF
Nous pouvons utiliser les mutations meta pour mettre à jour les données des champs personnalisés ACF, en passant leurs noms de champs et valeurs, quel que soit leur type :
mutation UpdatePost($postId: ID!) {
updatePost(
input: {
id: $postId
meta: {
text_field: ["New text value"],
textarea_field: ["New textarea value"],
select_field: ["New select value"],
multi_select_field: ["Choice 1", "Choice 2"],
number_field: [42],
date_field: ["20240320"],
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
text: metaValue(key: "text_field")
textarea: metaValue(key: "textarea_field")
select: metaValue(key: "select_field")
multiSelect: metaValues(key: "multi_select_field")
number: metaValue(key: "number_field")
date: metaValue(key: "date_field")
}
}
}