web-dev-qa-db-fra.com

Commentaire du formulaire de connexion à Gravity Forms

Je souhaite utiliser le formulaire de commentaire que j'ai créé pour transférer ensuite les données directement dans une entrée de Gravity Forms. Je pense que cela peut fonctionner à partir de ceci:

Quelqu'un remplit le formulaire de commentaire. Si la case à cocher est cochée, je collecte le nom et l'adresse électronique du commentateur et les ajoute en tant qu'entrée à un formulaire Gravity.

Personne ne verra jamais une forme Gravity réelle mais voudra savoir comment cela peut être fait. Je suppose que cela se fait en transmettant les paramètres à l'URL suivante une fois le commentaire soumis, puis capturée par une fonction qui utilise ensuite ces données pour stocker en tant qu'entrée.

1
manc

Ceci est possible en utilisant l'action comment_post et la classe GFAPI qui gère les entrées dans WordPress.

Ce que vous devez d’abord, c’est d’ajouter en utilisant comment_form_default_fields un champ qui est une case à cocher.

function add_to_email_list_field($fields) {

    $fields['add-to-email'] = '<p class="comment-form-public">
    <input id="addtoemail" name="addtoemail" type="checkbox" />
    <label for="addtoemail">
    Check this box to add yourself to our email list.
    </label></p>';
    return $fields;
}
add_filter('comment_form_default_fields','add_to_email_list_field');

Ceci ajoute au formulaire de commentaire (avant la case de commentaire réelle) une case à cocher. Si cette case est cochée, nous devons ajouter un objet d'entrée à Gravity Forms. Ce formulaire suppose que le premier champ est le nom et le second champ est l’email et que l’ID du formulaire est 1. Cela devra changer sur votre site: -

function save_to_gravity_form( $post_id ) {
     $save_meta_checkbox = esc_attr( $_POST['addtoemail'] );

    if ( $save_meta_checkbox == 'on' ) {
        $entry = array( 'form_id' => 1, // Change form ID to your Gravity Form ID
            1 => esc_attr( $_POST['name'] ), // Change 1 to the field ID in your Gravity Form for Name 
            2 => esc_attr( $_POST['email'] // Change 2 to the field ID in your Gravity Form for Email )
        );
        $entry_id = GFAPI::add_entry($entry);

        if ( is_wp_error( $entry_id ) ) {
            wp_die( $entry_id->get_error_message() );
        }
    }

}
add_action( 'comment_post', 'save_to_gravity_form', 1 );

C'est très rapide, alors j'espère que cela fonctionne pour vous :)

3
Rhys Wynne