簡體   English   中英

從wordpress插件重定向

[英]Redirect from within a wordpress plugin

從插件中進行重定向的正確方法是什么?

當我的插件中的代碼被執行時,WordPress已經將標題打印到瀏覽器,所以我看不出如何從插件內部進行302/301重定向。

出於顯而易見的原因,我不想進行Javascript重定向!

謝謝

add_filter('wp_redirect', 'plugin_redirect' , 10, 2);

function plugin_redirect($location, $status) {
   // Your redirect function code here
   return $location;
}

在add_filter函數中

  • 第二個參數是您的過濾器函數名稱。
  • 第三個參數是您的函數優先級。
  • 第四個參數是過濾器函數接受的參數數量。

wp_redirect過濾器函數接受2個參數。

如果調用wp_redirect太晚了,你可能無法使用它(不確定你在執行的哪個地方調用它)。 假設這是一個管理插件頁面中的重定向,另一種方法是在緩沖區中捕獲輸出,這意味着您仍然可以發送標頭。 我用過的一個例子是:

# In your 'admin_menu' callback:
$page_hook = add_options_page('My Plugin', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options');
add_action( 'load-' . $page_hook , 'my_ob_start');

# Somewhere else in your plugin
function my_ob_start() {
    ob_start();
}

顯然更改名稱等,但這應該讓你在插件頁面的任何地方使用header()。 它確實有一些缺點,但默認情況下不會顯示錯誤等,因此使用風險由您自行承擔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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