it-swarm.com.de

Einfügen von Schwerkraft-Form-Kontrollkästchenwerten in erweiterte benutzerdefinierte Felder

Ich versuche, Kontrollkästchenwerte aus einem Gravity Forms-Formular (das einen neuen Beitrag erstellt) in ein Feld "Erweiterte benutzerdefinierte Felder" einzugeben. Ich habe mich umgesehen und einige Informationen in einem Post gefunden (am Ende der Frage).

Ist das der richtige Weg? Es werden nicht die mehreren Kontrollkästchen GF in das ACF-Textfeld eingefügt. Soll ich in ACF Kontrollkästchen mit denselben Optionen 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 ausprobiert, 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 erweiterten Forum für benutzerdefinierte Felder kann helfen - http://support.advancedcustomfields.com/discussion/544/acf-and-gravity-forms/p1

Ich habe auch einige Screenshots angehängt.

enter image description hereenter image description here

3
Rob

Meine Situation, um dieses Problem anzugehen, war etwas problematisch, da ich das GF Update Post-Plugin verwenden wollte, damit meine Benutzer ihren Beitrag direkt nach dem Einreichen des Inhalts bearbeiten können. Mit der obigen Lösung schreibt ACF nicht in die Datenbank und korrigiert die ACF-Felder (zumindest nicht für mich).

Meine Lösung:

  1. Erstellen Sie eine benutzerdefinierte ACF-Feldgruppe, fügen Sie ein Feld mit denselben Kontrollkästchen hinzu und verwenden Sie denselben meta_key wie Ihr Schwerkraftformular.

  2. Verwenden Sie eine Funktion nach der Übermittlung, 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);
    }
    
4
Andy

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

Hinweis: Verwenden der aktuellen Versionen - WordPress 3.5, Erweiterte benutzerdefinierte Felder 3.5.7.2, Schwerkraftformulare 1.6.11

Erstens erfordern "normale" Felder wie Textfelder keinen zusätzlichen Aufwand. In ACF erstellen, einen Beitrag erstellen, in dem er verwendet wird, damit er von GF gefunden werden kann, einem Formular GF hinzufügen und verwenden. Der Wert wird in das Feld geschrieben. Auftrag ist erledigt. Kein zusätzlicher Code erforderlich.

Für Kontrollkästchen bedeuten mehrere Häkchen mehrere Werte, die dem Beitrag hinzugefügt werden sollen. GF erledigt genau das, was Sie von einem vernünftigen WordPress-Plugin erwarten. Es erstellt mehrere Einträge in der Postmeta-Tabelle. Aber das will ACF nicht. Wenn Sie einen Beitrag bearbeiten und mehrere Kontrollkästchen in einem ACF-Feld aktivieren, wird ein einzelner Postmeta-Datensatz mit einem serialisierten Array gespeichert. Nett.

Um zu "reparieren", was GF tut, damit es nicht so funktioniert, wie es ACF will, holen Sie sich die ID Ihres Formulars und fügen Sie einen Filter hinzu, um die Post-Daten zu löschen, bevor GF sie speichert zur postmeta:

$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;
}

Auftrag ist erledigt. Böser Hack, aber ACF ist zumindest glücklich.

2
webaware