Requêter les données des plugins
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")
    }
  }
}