Форма контакта не работает после перехода с HTML (статический) на WP - PullRequest
0 голосов
/ 24 августа 2018

Заранее спасибо за чтение.Я преобразовал свою статическую HTML-страницу в Wordpress, после того как контактная форма перестала работать.Я думаю, что это как-то связано со ссылками в form.js и handler.php.Смотрите ** в handler.php и form.js.Помоги мне !!!:)

Живая версия: 050management.nl

Форма HTML

                        <div class="row">
                            <div class="col-md-7">
                                <div class="input-group">
                                    <input type="text" class="form-control" type="text" name="Name" id="name" placeholder="Uw naam..." required data-error="Voer uw naam in">

                                </div>
                            </div>
                        </div>


                      <div class="row">
                            <div class="col-md-7 pt-2">
                                <div class="input-group">
                                    <input type="text" class="form-control" type="email" name="Email" id="email" placeholder="Uw e-mailadres..." required data-error="Voer uw e-mailadres in">

                                </div>
                            </div>
                        </div>

                        <div class="row">
                            <div class="col-md-12 pt-2">
                                <div class="input-group">
                                    <textarea name="Message" id="message" class="form-control" cols="30" rows="5" placeholder="Uw bericht..." data-error="Stel uw vraag"></textarea>

                                </div>
                            </div>
                        </div>
                        <div class="input-group pt-2">
                        <div class="g-recaptcha" data-sitekey="6LddA2oUAAAAAHmFtwEkS68c4_UUi3hGpd7AZyOo"></div>

                        </div>
                        <div class="row">
                            <div class="col-md-9 pt-2">
                                <div class="input-group">
                                    <input type="submit" class="contact-submit" value="Verzenden">
                                </div>
                            </div>
                       </div>

                 </form>
 <div  id="success_message" style="display:none">
  <h4>Dank voor uw bericht.</h4>
  <p>
  We zullen spoedig contact met u opnemen.
  </p>
  </div>
 <div id="error_message"
    style="width:100%; height:100%; display:none; ">
        <h4>Er ging iets mis...</h4>
        <p><a href="mailto:info@050management.nl">Mail </a>ons of <a href="tel:0031502115149">bel </a>ons rechtsreeks. Dank u wel. 
 </div>
 </div>

.........

<script src="<?php echo get_template_directory_uri().'/js/form.js' ?>"></script>

form.js (url: /js/form.js)

 $(function()
 {
function after_form_submitted(data) 
{
    if(data.result == 'success')
    {
        $('form#reused_form').hide();
        $('#success_message').show();
        $('#error_message').hide();
    }
    else
    {
        $('#error_message').append('<ul></ul>');

        jQuery.each(data.errors,function(key,val)
        {
            $('#error_message ul').append('<li>'+key+':'+val+'</li>');
        });
        $('#success_message').hide();
        $('#error_message').show();

        //reverse the response on the button
        $('button[type="button"]', $form).each(function()
        {
            $btn = $(this);
            label = $btn.prop('orig_label');
            if(label)
            {
                $btn.prop('type','submit' ); 
                $btn.text(label);
                $btn.prop('orig_label','');
            }
        });

    }//else
}

$('#reused_form').submit(function(e)
  {
    e.preventDefault();

    $form = $(this);
    //show some response on the button
    $('button[type="submit"]', $form).each(function()
    {
        $btn = $(this);
        $btn.prop('type','button' ); 
        $btn.prop('orig_label',$btn.text());
        $btn.text('Sending ...');
    });


                $.ajax({
            type: "POST",
            **url: 'handler.php',**
            data: $form.serialize(),
            success: after_form_submitted,
            dataType: 'json' 
        });        

  });   
 });

handler.php (url: handler.php) та же папка, что и index.php

 <?php
 ini_set('display_errors', 1);
 ini_set('display_startup_errors', 1);
 error_reporting(E_ALL);

 **require_once '/vendor/autoload.php';**

 use FormGuide\Handlx\FormHandler;


 $pp = new FormHandler(); 

 $validator = $pp->getValidator();
 $validator->fields(['Name','Email'])->areRequired()->maxLength(50);
 $validator->field('Email')->isEmail();
 $validator->field('Message')->maxLength(6000);


 $pp->requireReCaptcha();
 $pp->getReCaptcha()->initSecretKey('REMAINS SECRET :)');


 $pp->sendEmailTo('info@050management.nl'); 

 echo $pp->process($_POST);

1 Ответ

0 голосов
/ 24 августа 2018

В WordPress все делается немного по-другому.

Вы можете отправлять данные с клиента на сервер через ajax с настройкой правильного действия.

укажите глобальную переменную ajaxurl внутри тега head или в любом месте перед обработкой формы:

<script>
   var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>

Когда вы отправляете данные, вы можете сделать это следующим образом:

$.post( ajaxurl, {
  action: 'handle_form',
  form_data: $form.serialize()
  }, function(data) {
    // logic after receiving a response
  }, 'json'
);

На стороне сервера в functions.php:

function handle_form_ajax_handler() {

    $form_data = $_POST['form_data'];

    // logic with $form_data

    wp_die();

}

add_action('wp_ajax_handle_form', 'handle_form_ajax_handler'); // add action for logged users
add_action( 'wp_ajax_nopriv_handle_form', 'handle_form_ajax_handler' ); // add action for unlogged users
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...