[英]How to redirect to different admin page in Wordpress?
我正在寫一個Wordpress插件。
我想執行重定向(在從POST數據創建DB記錄等之后......)到其他ADMIN頁面。
標題(“Location:...”)和wp_redirect()都沒有工作 - 我得到了
警告:無法修改標頭信息 - 已發送的標頭
這是出於明顯的原因。
如何在Wordpress中正確執行重定向?
在表單操作上,將“noheader = true”添加到操作URL。 這樣可以防止在重定向之前輸出管理區域的標題。 例如:
<form name="post" action="<?php echo admin_url('admin.php?page=your-admin-page&noheader=true'); ?>" method="post" id="post">
如果您仍然希望在使用WP add_page *函數時從插件管理頁面重定向到另一個管理頁面,那么在處理完您的請求后,您可以回復如下內容:
<script type="text/javascript">
window.location = '/whatever_page.php';
</script>
這只是將基於javascript的重定向呈現為“/whatever_page.php”,從而確保WP已經發送的標題沒有麻煩,正如Chris Ballance已經說過的那樣。
將“/whatever_page.php”更改為“/wp-admin/admin.php?page=whatever_page”
對於添加了add_submenu_page(或相關函數)的鏈接,請使用返回的$ hook_suffix向“load- $ hook_suffix”添加操作並在那里進行重定向。 這是在輸出開始之前掛鈎到頁面加載的方式。
我想我的做法是錯誤的。
我的代碼在add_action('admin_menu',...)調用中的add_menu_page()里面
這可能是在請求期間稍后調用的(在頁面標題創建和顯示之后)。
將我的代碼移出我的插件句柄,進入主要范圍工作 - 它需要一些清理和修復,但重定向工作。
無論如何,謝謝你的答案。
您需要確保在重定向發生之前沒有任何內容發送到http輸出。
你可以設置“window.location('newlocation');” 並且在輸出發送到瀏覽器后仍然可以重定向。
我想你必須確保wp_redirect()在任何輸出發送之前出現。
將其加載到template_redirect中。
add_action('template_redirect', 'myplugin_template_redirect');
function myplugin_template_redirect() {
wp_redirect('http://www.example.com/', 301);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.