Как перенаправить на другую страницу администратора в Wordpress? - PullRequest
10 голосов
/ 30 января 2009

Я пишу плагин для Wordpress.

Я хочу выполнить перенаправление (после создания записей БД из данных POST и т. Д.) На другую страницу ADMIN.

Ни заголовок ("Location: ...), ни wp_redirect () не работают - я получаю

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены

что происходит по очевидной причине.

Как правильно выполнить перенаправление в Wordpress?

Ответы [ 7 ]

39 голосов
/ 26 января 2011

В вашем действии формы добавьте 'noheader = true' к URL действия. Это предотвратит вывод заголовков для области администратора перед вашим перенаправлением. Например:

<form name="post" action="<?php echo admin_url('admin.php?page=your-admin-page&noheader=true'); ?>" method="post" id="post">
3 голосов
/ 04 января 2011

Если вы все еще хотите перенаправить страницу администрирования вашего плагина на другую страницу администратора при использовании функций WP add_page *, то после обработки вашего запроса вы можете просто повторить что-то вроде этого:

<script type="text/javascript">
window.location = '/whatever_page.php';
</script>

Это просто делает перенаправление на основе javascript в "/whwhat_page.php", таким образом гарантируя отсутствие проблем с заголовками, уже отправленными WP, как уже сказал Крис Балланс.

Измените "/whwhat_page.php" на что-то вроде "/wp-admin/admin.php?page=whwhat_page"

2 голосов
/ 06 апреля 2012

Для ссылки, добавленной с помощью add_submenu_page (или связанной функции), используйте возвращенный $ hook_suffix, чтобы добавить действие в «load- $ hook_suffix» и выполнить там перенаправление. Вот как вы подключаетесь к загрузке страницы до начала вывода.

1 голос
/ 30 января 2009

Я думаю, что делал это неправильно.

Мой код был внутри add_menu_page () внутри add_action ('admin_menu', ...) call

, который, вероятно, вызывается позже во время запроса (после того, как заголовок страницы был создан и отображен).

Перемещение моего кода за пределы дескрипторов моего плагина в основную область работало - требуется некоторая очистка и исправления, но перенаправление работает.

В любом случае, спасибо за ответы.

0 голосов
/ 11 мая 2009

Загрузить его в template_redirect.

add_action('template_redirect', 'myplugin_template_redirect');

function myplugin_template_redirect() {  
   wp_redirect('http://www.example.com/', 301);
}
0 голосов
/ 30 января 2009

Полагаю, вам просто нужно убедиться, что wp_redirect () происходит до того, как какой-либо вывод был отправлен.

0 голосов
/ 30 января 2009

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

Вы можете установить "window.location ('newlocation');" и это все еще позволит вам перенаправить после отправки вывода в браузер.

...