2011-11-03 57 views
0

從插件中做重定向的正確方法是什麼?從wordpress插件中重定向

當我的插件中的代碼被執行時,WordPress已經向瀏覽器打印了標題,所以我沒有看到從插件內部執行302/301重定向的可能性。

我不想做一個Javascript重定向的原因很明顯!

感謝

回答

1

如果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(); 
} 

顯然改變名稱等,但應該讓那麼你用頭()在你的插件頁面的任何地方。它確實有一些缺點,但是默認情況下不會顯示錯誤等,所以請自擔風險。

1
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個參數。

+0

請給我一個用例。 add_filter調用在哪裏,在我的插件代碼或外部? – MrCode