Consultar Dados de Plugins
Consultar Dados de PluginsAdvanced Custom Fields (ACF)

Advanced Custom Fields (ACF)

Exemplos de queries para interagir com dados do plugin Advanced Custom Fields (ACF).

Buscando campos personalizados ACF

Podemos usar campos meta para consultar dados de campos personalizados ACF, independentemente do tipo que sejam:

query GetPost($postId: ID!) {
  post(by: { id: $postId }) {
    id
    title
 
    # Tipos de campo básicos
    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")
 
    # Campo de data
    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)
  }
}

Se o valor meta for um relacionamento (ex.: um post, um usuário, uma taxonomia, etc.), podemos usar o valor para consultar a entidade correspondente do tipo Post, User, Taxonomy, etc.:

query GetPostWithRelationships($postId: ID!) {
  post(by: { id: $postId }) {
    id
    title
    
    # Exportar o relacionamento com um post
    relationshipPostId: metaValue(key: "relationship_post_id")
      @export(as: "relationshipPostId")
 
    # Exportar o relacionamento com uma lista de posts
    relationshipPostIds: metaValue(key: "relationship_post_ids")
      @export(as: "relationshipPostIds")
  }
}
 
query QueryPostRelationships @depends(on: "GetPostWithRelationships") {  
  # Consultar o relacionamento com um post
  relationshipPost: post(by: { id: $relationshipPostId }) {
    id
    title
  }
 
  # Consultar o relacionamento com uma lista de posts
  relationshipPosts: posts(filter: { ids: $relationshipPostIds }) {
    id
    title
  }
}

Atualizando campos personalizados ACF

Podemos usar mutations meta para atualizar dados de campos personalizados ACF, passando os nomes e valores dos campos, independentemente do tipo que sejam:

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