Как создать динамическую страницу на основе данных формы с помощью плагина?


У меня есть форма, которую заполняют пользователи. Когда они заканчивают, они перенаправляются на сторонний сайт для настройки способов оплаты. После завершения процесса оплаты они отправляются обратно на мой сайт с различными переменными $_POST.

Моему плагину необходимо создать страницу благодарности на основе этих переменных POST. Это простая маленькая страница с заголовком и несколькими абзацами текста.

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

Я прикрепил к init функцию, которая анализирует данные $_POST (конечно, после очистки). Эта функция создает две глобальные переменные: $my_title и $my_content Однако я не уверен, как превратить их в страницу для пользователя.

Платежная система отправит пользователей на www.mysite.com/thank-you

Пока у меня есть фильтр на rewrite_rules_array, чтобы добавить мой URL:

function my_rewrite_rules( $rewrite_rules) {
    $rule = array('thank-you/?$' => 'index.php?formresult=thank-you');
    $rewrite_rules = $rule + $rewrite_rules;
    return $rewrite_rules
}

Я фильтрую query_vars, чтобы добавить свое:

function my_insert_qv($vars) {
    array_push($vars, 'formresult');
    return $vars;
}

Затем у меня есть действие над template_redirect, где я думаю, действие должно быть таким. Может быть, это неправильный путь.

function my_template_redirect() {
    gloval $wp;
    $qvs = $wp->query_vars;
    if (array_key_exists( 'laundry', $qvs && $qvs['laundry'] == 'thank-you' ) {
        global $wp_query;
        $wp_query->set( 'is_404', false );
        // ... now what?
    }
}

Как я могу показать пользователю страницу, которая загружает шаблон страницы по умолчанию из активной темы и показывает мой динамический заголовок и содержимое?

Author: Peter G, 2011-09-13

1 answers

Что-то подобное должно сработать, хотя я не уверен, как будут вести себя мета, заголовок и т. Д., Вы захотите все тщательно протестировать!

function my_template_redirect() {
    global $wp;
    $qvs = $wp->query_vars;
    if (array_key_exists( 'laundry', $qvs && $qvs['laundry'] == 'thank-you' ) {
        global $wp_query;
        $wp_query->set( 'is_404', false );
        // ... now what?

        $post = new stdClass();
        $post->ID= -99; // fake ID, hehe
        $post->post_content = 'some content';
        $post->post_excerpt = 'an excerpt';
        $post->post_status ='publish';
        $post->post_title = 'My fake page';
        $post->post_type = 'page';
        $wp_query->queried_object = $post;
        $wp_query->post = $post;
        $wp_query->found_posts = 1;
        $wp_query->post_count = 1;
        $wp_query->max_num_pages = 1;
        $wp_query->is_page = 1;
        $wp_query->is_404 = false;
        $wp_query->posts = array($post);
        $wp_query->page = 1;
        $wp_query->is_post = false;

    }
}
 1
Author: Milo, 2011-09-13 16:51:46