簡體   English   中英

如何在Wordpress中重定向到不同的管理頁面?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM