Надсилання змінних з Wordpress Контактний формуляр 7 подання на сторінку успіху

Я використовую контактну форму 7 з Wordpress 3.5.

Наразі, коли користувач надсилає повідомлення, вони перенаправляються на сторінку успіху, використовуючи наступне в полі "Додаткові налаштування":

on_sent_ok: 'location.replace("http://www.example.org/success-page");'

Я хочу мати можливість налаштувати вихідну сторінку успіху за допомогою вводу з поля, наприклад:

on_sent_ok: 'location.replace("http://www.example.org/success-page?name=yourname");'

Я сподівався, що, скинувши звичайні контактні форми 7 шорткодів у додаткові параметри, він, можливо, відправив значення поля, але це не так.

Чи може хто-небудь запропонувати, як я можу отримати значення поля з контактної форми 7 в url, або альтернативно відправити як параметр $ _POST? Це може зажадати деякого JavaScript, щоб зробити це, я думаю.

2
Здається, Wordpress не любить URL-адреси з закодованими рядками запитів, тому вони, ймовірно, повинні переходити як $ _POST vars
додано Автор Christian Mayne, джерело

7 Відповіді

Це можливо, але потрібно зберегти відправлені дані з контактної форми на сеанс і показати їх там.

Додайте це до ваших функцій

add_action('wpcf7_mail_sent', 'save_cf7_data');


function save_cf7_data($cf) 
{

    if(session_id() == '') {
       session_start();
    }

    $current_submission = WPCF7_Submission::get_instance();

    $_SESSION['cf7_submission'] = $current_submission->get_posted_data();


}

А на сторінці успіху потрібно просто надрукувати сеанс var, наприклад:

echo $_SESSION['cf7_submission']['name'];

Це все.

2
додано
Я намагаюся ваше рішення, але це не працює для мене (останні WP & CF7). Я отримую повідомлення про помилку: Примітка: Невизначена змінна: _SESSION і у мене є on_sent_ok: "location = 'форма-сторінка/дякую /';"
додано Автор alex, джерело

Іншим варіантом є використання jQuery або Javascript і виклик форми у форматі submit. Після того, як форма спіймана, ви можете серіалізувати параметри і передавати їх на користувацьку сторінку, щоб їх ловити і робити з ними.

Приклад для jQuery:

jQuery(document).ready(function($) {
    $('.wpcf7-form').each(function() {
        $(this).on('submit', function (e) {
            e.preventDefault();

            $.ajax({
                type: 'POST',   //Can also choose GET instead
                url: 'forms/getParams',
                data: $(this).serialize(),
                dataType: "json",
                success: function (data) {
                    $(this)[0].reset();   //Optional in case you want to clear the form on success
                },
                error: function (data, errorThrown) {
                    console.log(errorThrown);
                }
            });

        });
    });
});
1
додано

Іншим варіантом є використання jQuery або Javascript і виклик форми у форматі submit. Після того, як форма спіймана, ви можете серіалізувати параметри і передавати їх на користувацьку сторінку, щоб їх ловити і робити з ними.

Приклад для jQuery:

jQuery(document).ready(function($) {
    $('.wpcf7-form').each(function() {
        $(this).on('submit', function (e) {
            e.preventDefault();

            $.ajax({
                type: 'POST',   //Can also choose GET instead
                url: 'forms/getParams',
                data: $(this).serialize(),
                dataType: "json",
                success: function (data) {
                    $(this)[0].reset();   //Optional in case you want to clear the form on success
                },
                error: function (data, errorThrown) {
                    console.log(errorThrown);
                }
            });

        });
    });
});
1
додано

Код додаткових налаштувань - JavaScript і, таким чином, працює в контексті браузера. це означає, що ви можете легко отримати доступ до даних форми, використовуючи звичайний код JavaScript

e.g. on_sent_ok: 'location.replace("http://www.example.org/success-page?name=" + jQuery("input[name=name]").val());'

1
додано
Привіт @danielcavanagh - Не знаю, як використовувати розділ "ім'я = ім'я" у вашій відповіді, наприклад, якщо моє поле форми виглядає наступним чином: [dynamicidden form-session-id "form_session_id" id: fid] Дякую :)
додано Автор Drewdavid, джерело

Код додаткових налаштувань - JavaScript і, таким чином, працює в контексті браузера. це означає, що ви можете легко отримати доступ до даних форми, використовуючи звичайний код JavaScript

e.g. on_sent_ok: 'location.replace("http://www.example.org/success-page?name=" + jQuery("input[name=name]").val());'

1
додано
Привіт @danielcavanagh - Не знаю, як використовувати розділ "ім'я = ім'я" у вашій відповіді, наприклад, якщо моє поле форми виглядає наступним чином: [dynamicidden form-session-id "form_session_id" id: fid] Дякую :)
додано Автор Drewdavid, джерело

Код додаткових налаштувань - JavaScript і, таким чином, працює в контексті браузера. це означає, що ви можете легко отримати доступ до даних форми, використовуючи звичайний код JavaScript

e.g. on_sent_ok: 'location.replace("http://www.example.org/success-page?name=" + jQuery("input[name=name]").val());'

1
додано
Привіт @danielcavanagh - Не знаю, як використовувати розділ "ім'я = ім'я" у вашій відповіді, наприклад, якщо моє поле форми виглядає наступним чином: [dynamicidden form-session-id "form_session_id" id: fid] Дякую :)
додано Автор Drewdavid, джерело

я думаю, ви повинні використовувати $ _REQUEST ['name']; для отримання змінної вашої публікації на сторінці успіху.

0
додано
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram