Gravitationsfeld-Kontrollkästchen-Werte in Erweiterte benutzerdefinierte Felder einfügen

Ich versuche, Checkbox-Werte aus einem Gravity Forms-Formular (das einen neuen Post erstellt) in ein Feld für erweiterte benutzerdefinierte Felder einzugeben. Ich habe gelesen und einige Informationen in einem Beitrag gefunden (am Ende der Frage).

Ist das der richtige Weg? Es werden nicht die Kontrollkästchen für mehrere GF in das ACF-Textfeld eingefügt. Sollte ich Kontrollkästchen mit den gleichen Optionen in ACF erstellen? Hier ist mein Code:

add_action("gform_post_submission", "acf_post_submission", 10, 2); function acf_post_submission ($entry, $form) { $post_id = $entry["post_id"]; $values = get_post_custom_values("submit_intended", $post_id); update_field("field_23", $values, $post_id); } 

Ich habe auch folgendes versucht, was sich auf die Screenshots bezieht:

 add_action("gform_post_submission", "checkbox_arrays", 10, 2); function checkbox_arrays($entry, $form) { $post_id = $entry["post_id"]; $form_id = $entry["form_id"]; if ($form_id==3) { $values = get_post_custom_values("submit_gf_intended", $post_id); add_post_meta($post_id, "submit_intended", $values); } } 

Dieser Beitrag im Forum für erweiterte benutzerdefinierte Felder kann helfen – http://support.advancedcustomfields.com/discussion/544/acf-and-gravity-forms/p1

Ich habe auch ein paar Screenshots beigefügt.

Bildbeschreibung hier eingebenBildbeschreibung hier eingeben

Solutions Collecting From Web of "Gravitationsfeld-Kontrollkästchen-Werte in Erweiterte benutzerdefinierte Felder einfügen"

Meine Situation, um dieses Problem anzugehen, war ein bisschen problematisch, weil ich das GF Update Post-Plugin verwenden wollte, damit meine Benutzer ihren Beitrag bearbeiten konnten, gleich nachdem sie den Inhalt eingereicht hatten. Mit der obigen Lösung schreibt ACF nicht in die db und korrigiert ACF Felder (zumindest nicht für mich).

Meine Lösung:

  1. Erstellen Sie eine benutzerdefinierte ACF-Feldgruppe und fügen Sie ein Feld mit denselben Ankreuzfeldern hinzu und verwenden Sie den gleichen Meta-Schlüssel wie Ihr Schwerkraftformular.

  2. Verwenden Sie nach dem Senden eine function, um alle übereinstimmenden Schlüssel als Array abzurufen und den ACF-Feldschlüssel zu aktualisieren (Auf dem Bildschirm anzeigen -> ACF-Feldwert im ACF-Feldgruppen-Bearbeitungsbildschirm)

     add_action("gform_after_submission_YOUR_FORM_ID", "acf_post_submission", 10, 2); function acf_post_submission ($entry, $form) { $post_id = $entry["post_id"]; $values = get_post_custom_values("YOUR_CUSTOM_FIELD", $post_id); update_field("ACF_FIELD_KEY", $values, $post_id); } 

Ich habe mir das heute Morgen noch einmal angeschaut, und ich denke, Ihr Problem und Ihre Lösung sind beide sehr einfach.

NB: Verwenden aktueller Versionen – WordPress 3.5, erweiterte benutzerdefinierte Felder 3.5.7.2, Gravity Forms 1.6.11

Erstens erfordern “gewöhnliche” Felder wie Textfelder keinen zusätzlichen Aufwand; Erstellen Sie in ACF einen Post, der sie verwendet, damit sie von GF gefunden, zu einem GF-Formular hinzugefügt und verwendet werden kann. Der Wert wird in das Feld geschrieben. Arbeit ist erledigt. Kein zusätzlicher Code erforderlich.

Bei Checkboxen bedeuten mehrere Ticks mehrere Werte, die dem Post hinzugefügt werden sollen. GF macht das, was Sie von einem normalen WordPress-Plugin erwarten, es erstellt mehrere Einträge in der Postmeta-Tabelle. Aber das ist nicht das, was ACF will. Wenn Sie einen Post bearbeiten und mehrere Kontrollkästchen in einem ACF-Feld markieren, wird ein einzelner Postmetadatensatz mit einem serialisierten Array gespeichert. Nett.

Also, um zu beheben, was GF tut, so dass es in der Weise kaputt geht, wie es ACF will, holen Sie die ID Ihres Formulars und fügen Sie einen Filter hinzu, um die Post-Daten zu klemmen, bevor GF sie in postmeta speichert:

 $formID = 1; // replace with ID of your form add_filter("gform_post_data_$formID", 'wpse_78826_gformPostData', 10, 3); /** * dirty hack to write checkbox field values as serialised arrays * to please Advanced Custom Fields, which is _doing_it_wrong() * @param array $post_data not really the $_POST data, more like a summary of it * @param array $form the GF form "object" * @param array $lead the GF lead / entry "object" * @return array */ function wpse_78826_gformPostData($post_data , $form, $lead) { $post_data['post_custom_fields']['checkboxen'] = serialize(explode(',', $post_data['post_custom_fields']['checkboxen'])); return $post_data; } 

Arbeit ist erledigt. Nasty Hack, aber ACF ist zumindest glücklich.