web-dev-qa-db-ja.com

式を処理した後、どうやってPlugIn管理サブメニューページにリンクすることができますか

私は3つのsubmenu_pagesを持つプラグインを持っています。一つのページには(一つのテキストには一つのアイテムのリストに)定型文があります。フォームを送信すると、何らかの処理が行われます。その後、私はform-pageに戻りたくはありませんが、WP Shellは私を他のsubmenu_pagesの1つ(この場合はリスト)にリダイレクトします。

これを達成するにはどうすればよいですか。

add_menu_page( 'page1 main page', '0', 'manage_options', 'mg-pi', 'mg_backend');    
add_submenu_page( 'mg-pi', 'list smthing', '0', 'manage_options', 'mg-pi-sub-list', 'mg_list');
add_submenu_page( 'mg-pi', 'create', '0', 'manage_options', 'mg-pi-sub-create', 'mg_new_item');   

そのため、mg_new_item()では処理が行われ、シェルはmg_list()にリダイレクトされます。しかし、私がmg_list()をphpで呼び出すと、URLはmg_new_item()のままです。

私はheader("Location: the-hardcoded-list-url");を実行できることを知っていますが、私はそれをするためのWordPressの一般的な方法を、一般的なURL生成と共に探しています。

1
helle

もう少し研究を重ねた結果、私は実際に探していたものが好きになりました。回避策ではなく、ワードプレス互換の方法です。

定義されたスラッグを期待する:menu_page_urlという関数があります。そしてwp_redirectがあります

だから我々は呼び出すために2つのワードプレス機能を持っています。この場合:

$foo = menu_page_url("mg-pi-sub-list");
wp_redirect($foo);

それでおしまい。そして良いことに、私はすべてのWordpressのルールを守っていますし、プラグインは将来のバージョンで互換性があるでしょう。

http://codex.wordpress.org/Function_Reference/wp_redirecthttp://codex.wordpress.org/ Function_Reference/menu_page_url

更新

そしてあなたがあなたのヘッダに問題があるなら、あなたはこのパラメータであなたを手助けすることができます:

<form action="?page=your-sub_page-slug&noheaders=true">
1
helle

単にadd_query_arg()remove_query_arg()get_query_var()を使ってください。

あなたのページリンクでは、あなたはstep=oneのような単純な問い合わせvarを使います。

$query_arg = add_query_arg( 'step', 'one', $_SERVER['REQUEST_URI'] );

その後、ユーザーがフォームを処理したら、ページをリロードするだけです。それから単にチェックしてください

0 !== get_query_var( 'step' )
AND 'one' !== get_query_var( 'step' )

さらに処理します。戻ってきたい場合は、remove_query_arg()などを使用してください。

1
kaiser