jacekwilczynski

form-confirm

Dec 12th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. /*
  2. * functions.php
  3. */
  4.  
  5. // Zarejestruj endpoint do wysyłania potwierdzenia (lepiej zmodyfikuj treść)
  6. add_action( 'rest_api_init', function () {
  7. register_rest_route( 'form-confirm/v1', '/send', array(
  8. 'methods' => 'POST',
  9. 'callback' => function ( $request ) {
  10. // Pobierz i oczyść adres e-mail
  11. $email = filter_var( $request->get_param( 'email' ), FILTER_SANITIZE_EMAIL );
  12.  
  13. // Wyślij maila
  14. $subject = 'Potwierdzenie wysłania wiadomości';
  15. $message = 'Pojszło! I chu.';
  16. $result = wp_mail( $email, $subject, $message );
  17.  
  18. // Wyślij odpowiedź do JS - czy się mail został wysłany
  19. return array( 'sent' => $result );
  20. },
  21. ) );
  22. } );
  23.  
  24. /*
  25. * W ramach wp_enqueue_scripts
  26. */
  27.  
  28. // Załaduj plik JS - jakkolwiek chcesz
  29. wp_enqueue_script( 'form_confirm', get_theme_file_uri( '/form-confirm.js' ), array( 'jquery' ) );
  30.  
  31. // Przekaż url endpointu do skryptu jako zmienną JS; pierwszy argument musi być taki sam, jak w wp_enqueue_script
  32. wp_localize_script( 'form_confirm', 'form_confirm', array(
  33. 'rest_url' => home_url( '/wp-json/form-confirm/v1/send' ),
  34. ) );
  35.  
  36. /*
  37. * W pliku JS
  38. */
  39.  
  40. (function($) {
  41. // Prosi back-end o wysłanie potwierdzenia na dany adres e-mail
  42. function sendConfirmationEmail(email) {
  43. $.post(window.form_confirm.rest_url, { email: email }, function(res) {
  44. console.log(res);
  45. });
  46. }
  47.  
  48. // Podpina wysłanie potwierdzenia pod submit event podanego formularza (obiekt jQuery)
  49. function confirmOnSubmit($form) {
  50. $form.on('submit', function() {
  51. var email = $form.find('[data-field_type="email"]').val();
  52. if (email) {
  53. sendConfirmationEmail(email);
  54. }
  55. });
  56. }
  57.  
  58. // Po załadowaniu dokumentu podepnij wysyłanie potwierdzenia pod wszystkie formularze Divi
  59. $(function() {
  60. $('.et_pb_contact_form').each(function() {
  61. confirmOnSubmit($(this));
  62. });
  63. });
  64. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment