EDIT: я расширил код примера, включив базовый прецедент.Как настроить перенаправление заголовка php на странице администрирования wordpress
Я пытаюсь создать страницу администратора для плагина в wordpress. Мне удалось создать простую страницу администратора, используя инструкции в кодексе. Тем не менее, я в настоящее время застрял. Я пытаюсь использовать вызов
header("Location: /myLocation");
, но я не могу установить заголовок, так как Apparantly к тому времени страница админа была загружена, другие HTML уже были выведены. Я хочу использовать перенаправление заголовка, так что обработчик формы, который я создаю для страницы администратора, может использовать шаблон POST для GET. (вернуть форму себе в сообщение, обработать почтовые данные, заголовок перенаправить обратно к себе с помощью get, чтобы он не предотвращал повторные сообщения и формы предупреждений о повторной отправке)
Есть ли способ изменить мою настройку, чтобы я был можно позвонить по телефону header()
?
Я последовал за учебник здесь http://codex.wordpress.org/Adding_Administration_Menus
и вот мой код, который в настоящее время в mu-plugin
. Будет ли это регулярный плагин повлиять на мою способность использовать header()?
. Я бы предпочел придерживаться mu-plugin
, если это возможно, но использовал бы обычный, если бы мне пришлось.
Вот код, все работает отлично, за исключением звонка на header()
. Его просто образец, приведенный в учебнике, с некоторыми из моих собственных текстов.
Спасибо за чтение!
<?php
/** Step 2 (from text above). */
add_action('admin_menu', 'my_plugin_menu');
/** Step 1. */
function my_plugin_menu() {
add_menu_page('My Plugin Options', 'Manage Articles', 'manage_options', 'manageArticles', 'manage_articles');
}
/** Step 3. */
function manage_articles() {
if (!current_user_can('manage_options')) {
wp_die(__('You do not have sufficient permissions to access this page.'));
}
?>
<?php
//this block of code is an example of what I am trying to do
if (isset($_POST['formSubmit']) && $_POST['formSubmit']==='true')
{
global $wpdb;
$wpdb->query("UPDATE myTable set name='{$_POST['something']}' where id='{$_POST['id']}'");
header("Location: manageArticles?updated");
}
if (isset($_GET['updated']))
{
echo "you have updated the table!";
}
?>
My admin page
<form name="theForm" action="" method="post">
Something: <input type="text" value="something" name="something"><br>
Row ID: <input type="text" value="1" name="id"><br>
<input type="hidden" value="true" name="formSubmit">
<input type="submit">
</form>
<?php
}
?>
Вы всегда можете попробовать поставить 'ob_start(); 'под вашим первым' php' –
html, который уже был получен, поступает из ядра wordpress, а не из моей страницы, поэтому буферизация вывода в моем собственном скрипте не будет иметь никакого эффекта. Я думаю, мне нужно использовать крючок, но я не знаю много чего. – chiliNUT
@chiliNUT Почему вы хотите перенаправить в manage_articles? Поэтому, если пользователь нажимает на управление меню товаров, что он должен делать? – Sabari