Plugin-Daten abfragen
Plugin-Daten abfragenAdvanced Custom Fields (ACF)

Advanced Custom Fields (ACF)

Mehr dazu in der Anleitung Mit Advanced Custom Fields (ACF) arbeiten.

Beispiele für queries zur Interaktion mit Daten aus dem Plugin Advanced Custom Fields (ACF).

ACF-Felder abrufen

Wir können Meta-Felder verwenden, um ACF-Felder abzufragen, unabhängig von ihrem Typ:

query GetPost($postId: ID!) {
  post(by: { id: $postId }) {
    id
    title
 
    # Grundlegende Feldtypen
    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")
 
    # Datumsfeld
    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)
  }
}

Wenn der Meta-Wert eine Beziehung ist (z. B. ein Beitrag, ein Benutzer, eine Taxonomie usw.), können wir den Wert verwenden, um die entsprechende Entität vom Typ Post, User, Taxonomy usw. abzufragen:

query GetPostWithRelationships($postId: ID!) {
  post(by: { id: $postId }) {
    id
    title
    
    # Beziehung zu einem Beitrag exportieren
    relationshipPostId: metaValue(key: "relationship_post_id")
      @export(as: "relationshipPostId")
 
    # Beziehung zu einer Liste von Beiträgen exportieren
    relationshipPostIds: metaValue(key: "relationship_post_ids")
      @export(as: "relationshipPostIds")
  }
}
 
query QueryPostRelationships @depends(on: "GetPostWithRelationships") {  
  # Beziehung zu einem Beitrag abfragen
  relationshipPost: post(by: { id: $relationshipPostId }) {
    id
    title
  }
 
  # Beziehung zu einer Liste von Beiträgen abfragen
  relationshipPosts: posts(filter: { ids: $relationshipPostIds }) {
    id
    title
  }
}

ACF-Felder aktualisieren

Wir können Meta-Mutationen verwenden, um ACF-Felder zu aktualisieren, indem wir ihre Feldnamen und Werte übergeben, unabhängig von ihrem Typ:

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