Consultar datos de plugins
Consultar datos de pluginsAdvanced Custom Fields (ACF)

Advanced Custom Fields (ACF)

Ejemplos de consultas para interactuar con datos del plugin Advanced Custom Fields (ACF).

Obtener campos personalizados de ACF

Podemos usar Valores meta para consultar los datos de campos personalizados de ACF, sea cual sea su tipo:

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 fecha
    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 el valor meta es una relación (p. ej.: una entrada, un usuario, una taxonomía, etc.), podemos usar el valor para consultar la entidad correspondiente de tipo Post, User, Taxonomy, etc.:

query GetPostWithRelationships($postId: ID!) {
  post(by: { id: $postId }) {
    id
    title
    
    # Exportar la relación a una entrada
    relationshipPostId: metaValue(key: "relationship_post_id")
      @export(as: "relationshipPostId")
 
    # Exportar la relación a una lista de entradas
    relationshipPostIds: metaValue(key: "relationship_post_ids")
      @export(as: "relationshipPostIds")
  }
}
 
query QueryPostRelationships @depends(on: "GetPostWithRelationships") {  
  # Consultar la relación a una entrada
  relationshipPost: post(by: { id: $relationshipPostId }) {
    id
    title
  }
 
  # Consultar la relación a una lista de entradas
  relationshipPosts: posts(filter: { ids: $relationshipPostIds }) {
    id
    title
  }
}

Actualizar campos personalizados de ACF

Podemos usar Valores meta para actualizar los datos de campos personalizados de ACF, pasando sus nombres de campo y valores, sea cual sea su tipo:

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