Клонирование данных формы и отправка с помощью общей кнопки с помощью WPForm - PullRequest
0 голосов
/ 12 февраля 2019

Некоторый контекст:

Мы используем WP с WPForm и другой CRM.Нам нужно было хранить данные от пользователя в WP, и в то же время CRM должен получить эти данные.

Первый подход, я сталкивался с этим wp-фильтром:

(Этот пример только что пришел сдемонстрационные поля, а не мои действительные поля)

ОБНОВЛЕНИЕ: РЕШЕНИЕ


/**
 * Integrate WPForms with CRM
 *
 * @author Bill Erickson
 * @link http://www.billerickson.net/contact-form-integration/
 * 
 * @param array $fields
 * @param array $entry
 * @param array $form_data
 * @param int $entry_id
 */
function be_crm_connector( $fields, $entry, $form_data, $entry_id ) {
    $api_url = 'http://example.com';
    $body = array(
        'secret'              => '',
        'name'                => $fields['1']['value'],
        'email'               => $fields['2']['value'],
        'phone'               => $fields['3']['value'],
        'url'                 => $fields['4']['value'],
        'referral'            => $fields['5']['value'],
        'referral_other'      => $fields['6']['value'],
        'services'            => $fields['7']['value'],
        'date'                => date( 'Y-m-d' ),
        'inquiry'             => $fields['8']['value'],
        'status'              => '1',
    );
    $request = wp_remote_post( $api_url, array( 'body' => $body ) );

    // Simple error handling
    if ( is_wp_error( $request ) ) {

        $msg  = "There was an error trying to push a lead to the CRM.\n";
        $msg .= 'Error returned: ' . $error = $request->get_error_message() . "\n\n";
        $msg .= "The lead below may need to be added to the CRM manually.\n";
        $msg .= $body['name'] . ' ' . $body['email'];

        wp_mail( get_bloginfo( 'admin_email' ), 'CRM Connector Error', $msg );
    }   
}
add_action( 'wpforms_process_complete_5702', 'be_crm_connector', 10, 4 );

Выше приведено реальное решение


* Длинная ночь и слишком многоКофе, не следуй следующему подходу в твоей жизни (в данном конкретном случае) *

Тогда я отказался от решения сделать это самым ленивым образом:

Я помещаю WPForm, затем получаю поля идентификатора

ФОРМА, ЗАПОЛНЕННАЯ ATUO (ФОРМА CRM):

       <form class="hidden" method="post" action="https://fancy.url.crm" pageId="878" siteId="66u7u01" parentPageId="147999216" id="WatsonPop" >       
                <input type="text" name="Nombre" id="control_COLUMN1" label="Nombre" class="textInput defaultText">  

                <input type="text" name="Apellido" id="control_COLUMN2" label="Apellido" class="textInput defaultText" >             

                <input type="text" name="Email" id="control_EMAIL" label="Email" class="textInput defaultText" >

                <input type="text" name="Mobile" id="control_COLUMN4" label="Celular" class="textInput defaultText" >

                <input type="text" name="Pre" id="control_COLUMN3" label="CasinoPreferente" class="textInput defaultText" >

                <input type="checkbox"  name="Privacidad" id="control_COLUMN6" label="">  

                <input type="submit" class="defaultText buttonStyle" value="Guardar">
                <input type="text" name="ID_R" id="control_COLUMN5">

                <input type="hidden" name="formSourceName" value="StandardForm">
                <!-- DO NOT REMOVE HIDDEN FIELD sp_exp -->
                <input type="hidden" name="sp_exp" value="yes">

               </form>

Код jQuery (к сожалению, я не знаюдаже не знаю, как правильно получить значение в VanillaJS ... .innerHTML ?? .value ??)

<script>
$(function(){
    var $name = $('#wpforms-7-field_0');
    var $nameW = $('#control_COLUMN1');

    var $last = $('#wpforms-7-field_0-last');
    var $lastW = $('#control_COLUMN2');

    var $email = $('#wpforms-7-field_1');
    var $emailW = $('#control_EMAIL');


    var $tel = $('#wpforms-7-field_4');
    var $telW = $('#control_COLUMN4');


   var $casino = $('#wpforms-7-field_10');
   var $casinoW = $('#control_COLUMN3');

   var $tnc = $('#wpforms-7-field_6_1');
   var $tncW =  $('#control_COLUMN6');

   var $id = $('#wpforms-7-field_5');
   var $idW =  $('#control_COLUMN5');



    function onChangeName() {
        $nameW.val($name.val());
    };

    function onChangeLast(){
        $lastW.val($last.val());
    }

    function onChangeEmail(){
         $emailW.val($email.val());
    }

    function onChangeTel(){
        $telW.val($tel.val());
    }

 function onChangeCasino(){
        $casinoW.val($casino.val());
    }

    function onChangeID(){
        var href = window.location.search;
        if(href.indexOf('/?id=') > -1) {
            $id.val('noID');
            $idW.val('noID');

        } else {
            $id.val(href);
            $idW.val(href);
        }
    }



    $('#wpforms-7-field_0').change(onChangeName).keyup(onChangeName);
    $('#wpforms-7-field_0-last').change(onChangeLast).keyup(onChangeLast);
    $('#wpforms-7-field_1').change(onChangeEmail).keyup(onChangeEmail);
    $('#wpforms-7-field_4').change(onChangeTel).keyup(onChangeTel);
    $('#wpforms-7-field_10').change(onChangeCasino).keyup(onChangeCasino);
    $('#wpforms-7-field_10').change(onChangeCasino).keyup(onChangeCasino);
    onChangeID();


    $tnc.on('change', function(){
     $tncW.prop('checked',this.checked);
    });


    $("#wpforms-submit-7").click(function() {
        $.post($("#WatsonPop").attr("action"),
              function() {
                console.log('Both forms submitted');
              });
      });

});
</script>

Но безуспешно ... Я не могу больше думать о лучшем решении, но, похоже, я застрял в том, как я пытаюсь заставить Баттон отправить 2 формы.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...