Перенаправление из плагина WordPress - PullRequest
0 голосов
/ 03 ноября 2011

Как правильно перенаправить из плагина?

К тому времени, когда код в моем плагине выполняется, WordPress уже распечатал заголовок для браузера, поэтому я не понимаю, как можно выполнить перенаправление 302/301 изнутри плагина.

Я не хочу делать редирект Javascript по понятным причинам!

Спасибо

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Если 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 () в любом месте вашей страницы плагина.Однако у него есть некоторые недостатки, ошибки не будут отображаться по умолчанию и т. Д., Поэтому используйте их на свой страх и риск.

1 голос
/ 03 ноября 2011
add_filter('wp_redirect', 'plugin_redirect' , 10, 2);

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

В функции add_filter

  • 2-й аргумент - это имя вашей функции фильтра.
  • 3-й аргумент - это приоритет вашей функции.
  • 4-йаргумент - это число аргументов, принятых вашей функцией фильтра.

Функция фильтра wp_redirect принимает 2 аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...