Ändern eines bestimmten Werts in einem komplexen Repeater / flexiblen Inhaltsfeld (ACF)

Ich habe also ein wirklich komplexes ACF-Repeater / flexibles Inhaltsfeld (im Wesentlichen ein Pagebuilder). Ich möchte einen bestimmten Sub-Sub- $source_post -Wert von einem Post ( $source_post ) erhalten und ihn programmatisch an die entsprechende Stelle in einem anderen Post ( $target_post ) $target_post . Ich habe eine Map, die auf das Unterfeld zeigt, in Array– und String-Form, es sieht so aus:

 $fieldmap_array = array( [2] => 0 [3] => columns [4] => 1 [5] => layout_content [6] => 0 [7] => image ); $fieldmap_string = [0][columns][1][layout_content][0][image]; 

(Es wird von einer Zeichenfolge analysiert, die ich dynamisch über einen Ajax-Aufruf erhalte).

Jetzt kann ich den Wert dieses Unterfelds wie folgt aus dem ursprünglichen Beitrag erhalten:

 $source_repeater_field_content = get_field('repeater_field', $source_post_id); foreach ($fieldmap_array as $key) : $source_repeater_field_content = $repeater_field_content[$key]; endforeach; 

Am Ende dieser Schleife enthält $source_repeater_field_content den $source_repeater_field_content Wert.

Was ich jetzt tun möchte, ist diesen Wert an der entsprechenden Stelle im Zielpost einzufügen.

 $target_repeater_field_content = get_field('repeater_field', $target_post_id); $target_repeater_field_content[0]['columns'][1]['layout_content'][0]['image'] = $source_repeater_field_content; update_field('repeater_field', $target_repeater_field_content, $target_post_id); 

Ich kann jedoch nicht einfach einen String eingeben, der dieses korrekte Unterfeld auswählt. Ich muss in der Lage sein, dynamisch auf den richtigen Schlüssel im Zielfeldfeld über eine foreach Schleife oder auf andere Weise zu zeigen, und ich weiß nicht, wie TU das.

Ich weiß nicht einmal, wie ich diese Frage richtig stellen soll 🙁 Ich nehme an, dass ich das irgendwie mit Array-pointersn machen kann? Hilfe?

(Wenn Sie sich für eine Anwendung interessieren, möchte ich eine Schaltfläche neben allen Bildfeldern in diesem Pagebuilder hinzufügen, die das Bild automatisch zwischen den Übersetzungen einer Seite (wpml) synchronisiert. Mein Kunde hat eine Website in 5 Sprachen und sie beschweren sich darüber eine Menge Arbeit, um die Bilder für jede Sprache einzeln zu wechseln, da dies NACH der Übersetzung der Seite selbst geschehen würde, funktioniert es nicht, nur den gesamten Post-Inhalt zu synchronisieren).

Solutions Collecting From Web of "Ändern eines bestimmten Werts in einem komplexen Repeater / flexiblen Inhaltsfeld (ACF)"

Ich beantworte wieder meine eigene Frage. : P Ich habe endlich diesen Gist gefunden, mit dem ich Array-Variablen über Punktnotation erhalten und setzen kann: https://gist.github.com/elfet/4713488

Also habe ich die DotNotation-class hinzugefügt und nun sieht mein Code so aus (hier werden alle Arten von Fehlerüberprüfungen übersprungen):

 $fieldmap_string = 'key1.key2.key3.etc'; $current_page_content = get_field('page_content', $source_post_id); $parsed_current_content = new DotNotation($current_page_content); $image_field_value = $parsed_current_content->get($fieldmap_string); $target_page_content = get_field('page_content', $target_post_id); $parsed_target_content = new DotNotation($target_page_content); $parsed_target_content->set($fieldmap_string, $image_field_value); $new_page_content = $parsed_target_content->getValues(); update_field('page_content', $new_page_content, $target_post_id); 

Klappt wunderbar.