ユーザーが記入するフォームがあります。終了すると、支払いオプションを設定するためにサードパーティのサイトにリダイレクトされます。支払いプロセスが完了すると、それらはさまざまな$ _POST変数と共に私のサイトに送り返されます。
私のプラグインはそれらのPOST変数に基づいてお礼のページを作成する必要があります。タイトルと数段落のテキストが含まれたシンプルな小さなページです。
これらのページをデータベースに保存したくありません。各トランザクションに固有のものになります。
$ _POSTデータを解析する関数をinit
にアタッチしました(もちろんサニタイズの後)。その関数は2つのグローバル変数を作成します:$my_title
と$my_content
しかし、それらをユーザーのためのページに変える方法はわかりません。
支払いシステムはwww.mysite.com/thank-you
にユーザーを送ります
これまでのところ、私は自分のURLを追加するためにrewrite_rules_array
にフィルタをかけています。
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?
}
}
アクティブなテーマからデフォルトのページテンプレートを読み込み、動的なタイトルとコンテンツを表示するページをユーザーに表示する方法を教えてください。
このようなことでうまくいくはずですが、メタ、タイトルなどがどのように振る舞うのかよくわかりませんが、すべてを徹底的にテストする必要があります。
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;
}
}