我正在寫一個Wordpress插件。如何在Wordpress中重定向到不同的管理頁面?
我想執行一個重定向(在從POST數據等創建DB記錄後)到其他ADMIN頁面。
無論是標題(「位置:...),也不wp_redirect()工作 - 我得到
警告:不能更改頭信息 - 已經
它來源於明顯的原因發送了頭
如何正確的WordPress的執行重定向?
我正在寫一個Wordpress插件。如何在Wordpress中重定向到不同的管理頁面?
我想執行一個重定向(在從POST數據等創建DB記錄後)到其他ADMIN頁面。
無論是標題(「位置:...),也不wp_redirect()工作 - 我得到
警告:不能更改頭信息 - 已經
它來源於明顯的原因發送了頭
如何正確的WordPress的執行重定向?
在您的表單操作,添加「NOHEADER =真」的行動網址。這將防止管理區域的標題在重定向之前被輸出。例如:
<form name="post" action="<?php echo admin_url('admin.php?page=your-admin-page&noheader=true'); ?>" method="post" id="post">
你需要確保沒有被髮送到http輸出重定向發生之前。
您可以設置「window.location('newlocation');」,並且在輸出發送到瀏覽器後仍然可以讓您重定向。
我想你只需確保wp_redirect()出現在任何輸出發送之前。
我覺得我做錯了。
我的代碼是內部 ADD_ACTION(「admin_menu」,...)一add_menu_page()調用內
這可能是請求(頁頭已被創建並顯示後)在以後調用。
將我的代碼移出我的插件句柄,進入主作用域工作 - 它需要一些清理和修復,但重定向工程。
無論如何,謝謝你的答案。
將其加載到template_redirect中。
add_action('template_redirect', 'myplugin_template_redirect');
function myplugin_template_redirect() {
wp_redirect('http://www.example.com/', 301);
}
`template_redirect`不是WordPress管理後臺中的可用動作鉤子。 – cfx 2014-10-14 04:26:44
如果你仍然想同時使用WP add_page *函數然後,處理您的請求後,從您的插件管理頁面重定向到另一個管理頁面,你可以迴應是這樣的:
<script type="text/javascript">
window.location = '/whatever_page.php';
</script>
這只是呈現一個基於JavaScript的重定向到「/whatever_page.php」,從而確保沒有像克里斯巴蘭斯已經說過的WP已經發送頭的麻煩。
更改「/whatever_page.php」以類似「/wp-admin/admin.php?page=whatever_page」
這應該是最後的手段! – PinoyStackOverflower 2015-01-13 07:23:40
對於add_submenu_page(或相關的功能)增加了一個鏈接,使用返回$ hook_suffix添加一個動作爲「負載$ hook_suffix」,並做了重定向那裏。這是您在輸出開始之前掛鉤到頁面加載的方式。
嘗試設置window.location並使用javascript進行重定向。 – 2009-01-30 13:34:42
我知道,但輸出來自.../wp-admin/menu-header.php:128 這是一個標準的wordpress文件。 我可以嘗試ob_start + ob_ * - 但是這似乎有點駭人聽聞。 – 2009-01-30 13:34:43