Как получить доступ к контактной форме 7 представленных данных на странице перенаправления? - PullRequest
1 голос
/ 23 марта 2020

Я использую контактную форму 7 для опроса. когда я нажимаю кнопку отправки формы 7, она перенаправляет на страницу благодарности. Я хочу получить все, что я отправляю на страницу благодарности. Как мне это сделать ?

1 Ответ

0 голосов
/ 24 марта 2020

Есть 2 способа добиться этого,

1.Используйте плагин, в котором хранятся отправленные данные, такие как Публикация моей формы CF7 (есть FAQ в страница плагина, которая объясняет, как получить доступ к сохраненной отправке на перенаправленной странице).

2.Если вы не хотите сохранять и сохранять отправленные данные, то вам необходимо сохранить отправленные данные в переходный и получить к нему доступ с перенаправленной страницы, вы можете сделать это,

Шаг 1: определить текущую отправку (это работает даже для незарегистрированных пользователей) с использованием WP nonce как скрытое поле в вашей форме, а также поместите скрипт js для перенаправления на вашу страницу после того, как успешное событие отправки с использованием анонимной функции с перехватом на дисплее cf7 do_shortcode_tag фильтр * фильтр ,

add_filter('wpcf7_form_hidden_fields','add_hidden_nonce');
function add_hidden_nonce($fields){
  $nonce = wp_create_nonce('cf7-redirect-id');
  $fields['redirect_nonce'] = $nonce;
  /*
   hook the shortcode tag filter using an anonymous function 
   in order to use the same nonce and place a redirect js event 
   script at the end of the form. 
  */
  add_filter('do_shortcode_tag', function($output, $tag, $attrs) use ($nonce){
    //check this is your form, assuming form id = 1, replace it with your id.
    if($tag != "contact-form-7" || $attrs['id']!= 1) return $output;
    $script = '<script>'.PHP_EOL;
    $script .= 'document.addEventListener( "wpcf7mailsent", function( event ){'.PHP_EOL;
    //add your redirect page url with the nonce as an attribute.
    $script .= '    location = "http://example.com/submitted/?cf7="'.$nonce.';'.PHP_EOL;
    $script .= '  }'.PHP_EOL;
    $script .= '</script>'.PHP_EOL;
    return $output.PHP_EOL.$script;
  },10,3);
  return $fields;
}

Шаг 2: перехватите действие cf7 'wpcf7_mail_sent' после того, как отправка прошла проверку / и электронное письмо отправлено.

add_action('wpcf7_mail_sent', 'save_posted_data_into_transient');
function save_posted_data_into_transient(){
  if(isset($_POST['redirect_nonce'])){ //save the data.
    //save the posted data from the form.  Note if you have submitted file fields you will also need to store the $_FILES array.
    set_transient('_cf7_data_'.$_POST['redirect_nonce'], $_POST, 5*60); //5 min expiration.
  }
}

Шаг 3: на странице перенаправления Теперь вы можете получить доступ к вашим сохраненным переходным данным , поместите их в верхней части шаблона страницы,

<?php
if( isset($_GET['cf7']) ){
  $transient = '_cf7_data_'.$_GET['cf7'];
  $data = get_transient($transient);
  //$data['my-text-field']....
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...