Как создать динамическую страницу на основе данных формы с помощью плагина?
У меня есть форма, которую заполняют пользователи. Когда они заканчивают, они перенаправляются на сторонний сайт для настройки способов оплаты. После завершения процесса оплаты они отправляются обратно на мой сайт с различными переменными $_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?
}
}
Как я могу показать пользователю страницу, которая загружает шаблон страницы по умолчанию из активной темы и показывает мой динамический заголовок и содержимое?
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;
}
}