plechev

Untitled

Dec 8th, 2018
533
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.09 KB | None | 0 0
  1. add_shortcode('rcl-form', 'my_rcl_form');
  2. function my_rcl_form(){
  3.  
  4.     $fields = array(
  5.         array(
  6.             'type' => 'text',
  7.             'slug' => 'field_one',
  8.             'title' => __('Текстовое поле'),
  9.             'placeholder' => __('Заполните это поле'),
  10.             'required' => 1,
  11.             'notice' => __('тут какое то примечание к полю')
  12.         ),
  13.         array(
  14.             'type' => 'select',
  15.             'slug' => 'field_two',
  16.             'title' => __('Выпадающий список'),
  17.             'values' => array(
  18.                 __('один'),
  19.                 __('два'),
  20.                 __('три')
  21.             ),
  22.             'notice' => __('выберите одно из значений')
  23.         ),
  24.         array(
  25.             'type' => 'textarea',
  26.             'slug' => 'field_three',
  27.             'title' => __('Многострочное поле'),
  28.             'placeholder' => __('Напишите хоть что то...'),
  29.             'required' => 1,
  30.             'notice' => __('еще одно примечание к текстовому полю')
  31.         ),
  32.         array(
  33.             'type' => 'hidden',
  34.             'slug' => 'my_form_submit',
  35.             'value' => 1
  36.         )
  37.     );
  38.  
  39.     //первая форма
  40.     $form = rcl_get_form(array(
  41.         'onclick' => 'rcl_send_form_data("my_first_form_process", this);return false;',
  42.         'submit' => __('Передать'),
  43.         'fields' => $fields
  44.     ));
  45.  
  46.     return $form;
  47. }
  48.  
  49.  
  50.  
  51. //обработчик первой формы
  52. rcl_ajax_action('my_first_form_process');
  53. function my_first_form_process(){
  54.  
  55.     rcl_verify_ajax_nonce();
  56.  
  57.     //тут обрабатываем данные с первой формы
  58.     //строим вторую форму и отправляем ее в диалоговом окне
  59.  
  60.     //вторая форма
  61.     $form = rcl_get_form(array(
  62.         'onclick' => 'rcl_send_form_data("my_two_form_process", this);return false;',
  63.         'submit' => __('Передать'),
  64.         'fields' => array(
  65.             array(
  66.                 'type' => 'runner',
  67.                 'slug' => 'field_one',
  68.                 'title' => __('Выберите число'),
  69.                 'notice' => __('тут какое то примечание к полю')
  70.             ),
  71.             array(
  72.                 'type' => 'checkbox',
  73.                 'slug' => 'field_two',
  74.                 'title' => __('Несколько чекбоксов'),
  75.                 'values' => array(
  76.                     __('один'),
  77.                     __('два'),
  78.                     __('три')
  79.                 ),
  80.                 'notice' => __('выберите одно из значений')
  81.             )
  82.         )
  83.     ));
  84.  
  85.     wp_send_json(array(
  86.         'dialog' => array( //вывод диалогового окна
  87.             'title' => __('Вторая форма'),
  88.             'content' => $form
  89.         )
  90.     ));
  91.  
  92. }
  93.  
  94. //обработчик второй формы
  95. rcl_ajax_action('my_two_form_process');
  96. function my_two_form_process(){
  97.  
  98.     rcl_verify_ajax_nonce();
  99.  
  100.     //тут обрабатываем данные со второй формы
  101.     //строим третью форму и отправляем ее в диалоговом окне
  102.  
  103.     //третья форма
  104.     $form = rcl_get_form(array(
  105.         'onclick' => 'rcl_send_form_data("my_three_form_process", this);return false;',
  106.         'submit' => __('Передать'),
  107.         'fields' => array(
  108.             array(
  109.                 'type' => 'dynamic',
  110.                 'slug' => 'field_one',
  111.                 'title' => __('Еще несколько вариантов'),
  112.                 'notice' => __('тут какое то примечание к полю'),
  113.                 'required' => 1
  114.             ),
  115.             array(
  116.                 'type' => 'radio',
  117.                 'slug' => 'field_two',
  118.                 'title' => __('Несколько радиокнопок'),
  119.                 'values' => array(
  120.                     __('один'),
  121.                     __('два'),
  122.                     __('три')
  123.                 ),
  124.                 'notice' => __('выберите одно из значений')
  125.             )
  126.         )
  127.     ));
  128.  
  129.     wp_send_json(array(
  130.         'dialog' => array( //вывод диалогового окна
  131.             'title' => __('Третья форма'),
  132.             'content' => $form
  133.         )
  134.     ));
  135.  
  136. }
  137.  
  138. //обработчик третьей формы
  139. rcl_ajax_action('my_three_form_process');
  140. function my_three_form_process(){
  141.  
  142.     rcl_verify_ajax_nonce();
  143.  
  144.     //тут обрабатываем данные с третьей формы
  145.     //и возвращаем уведомление об успехе
  146.  
  147.     wp_send_json(array(
  148.         'success' => __('Данные успешно обработаны!'),
  149.         'dialog' => array( //закрываем диалоговое окно
  150.             'close' => true
  151.         )
  152.     ));
  153.  
  154. }
Add Comment
Please, Sign In to add comment