10

私はWordpressプラグインを書いています。

(POST データなどから DB レコードを作成した後) 他の ADMIN ページへのリダイレクトを実行したいと考えています。

header("Location: ...) も wp_redirect() も機能しません-取得します

警告: ヘッダー情報を変更できません - ヘッダーは既に送信済みです

これは明らかな理由から来ています。

Wordpress でリダイレクトを適切に実行するにはどうすればよいですか?

4

7 に答える 7

40

フォームアクションで、アクションURLに「noheader=true」を追加します。これにより、リダイレクトの前に管理領域のヘッダーが出力されなくなります。例えば:

<form name="post" action="<?php echo admin_url('admin.php?page=your-admin-page&noheader=true'); ?>" method="post" id="post">
于 2011-01-26T20:10:27.887 に答える
3

WP add_page* 関数を使用しているときにプラグイン管理ページから別の管理ページにリダイレクトしたい場合は、リクエストを処理した後、次のようにエコーすることができます。

<script type="text/javascript">
window.location = '/whatever_page.php';
</script>

これは、「/whatever_page.php」へのjavascriptベースのリダイレクトをレンダリングするだけなので、Chris Ballanceがすでに言ったように、WPによってすでに送信されたヘッダーに問題がないようにします。

「/whatever_page.php」を「/wp-admin/admin.php?page=whatever_page」のように変更します

于 2011-01-04T13:53:48.150 に答える
2

add_submenu_page (または関連する関数) で追加されたリンクの場合、返された $hook_suffix を使用して "load-$hook_suffix" にアクションを追加し、そこでリダイレクトを行います。これは、出力が開始される前にページの読み込みにフックする方法です。

于 2012-04-06T18:56:49.057 に答える
0

リダイレクトが行われる前に、http 出力に何も送信されないようにする必要があります。

「window.location('newlocation');」を設定できます 出力がブラウザに送信された後でもリダイレクトできます。

于 2009-01-30T13:28:48.313 に答える
0

出力が送信される前に wp_redirect() が来ることを確認するだけでよいと思います。

于 2009-01-30T13:28:54.317 に答える
-1

template_redirectにロードします。

add_action('template_redirect', 'myplugin_template_redirect');

function myplugin_template_redirect() {  
   wp_redirect('http://www.example.com/', 301);
}
于 2009-05-11T05:16:29.980 に答える