Intereting Posts
Как я обычно извлекаю миниатюру последнего сообщения? WP Query и несколько страниц Ограничение заголовков в плагине AZIndex Скопировать SEO Meta Desc «Custom Field» в поле Excerpt? Как предотвратить кодирование HTML-кода плагина для сущностей? Скрипты не загружаются через функцию Метод в WordPress Theme Как получить доступ к моему сайту WP локально и публично? Почему некоторые пользовательские файлы javascript работают, но некоторые из них не являются исключая текущий пост из get_posts next_posts_link не работает для цикла, вызванного с помощью ajax Почему шаблон моей категории игнорирует тип сообщения? Категория для страниц в WordPress Как я могу заставить функцию динамически определять, зарегистрирован ли пользователь для изменения текста меню навигации? что-нибудь вроде add_meta_box для категорий? Получить выбранный URL-адрес из списка страниц wplink для использования в коротком коде

Параметры GET мешают моим настройкам плагина

У меня есть все настройки моего плагина с помощью API настроек и работы, но у меня есть две ручные функции в моем плагине, которые могут запускаться пользователем администратора, посетив следующий URL-адрес

<?php echo admin_url(); ?>options-general.php?page=wordpress-file-monitor-plus&sc_wpfmp_action=1&sc_wpfmp_scan=1 <?php echo admin_url(); ?>options-general.php?page=wordpress-file-monitor-plus&sc_wpfmp_action=1&sc_wpfmp_reset_settings=1 

Я использую admin_init для admin_init этих параметров GET и выполняю эти функции.

Функции выполняются нормально, и пользователь возвращается на мою страницу настроек плагина, но параметры GET все еще находятся в URL-адресе. Не большая проблема, но если пользователь затем продолжит работу и сохранит настройки, параметры GET будут отправлены снова и, таким образом, снова запустите эти функции.

Почему API-интерфейс настроек отправляет эти параметры при отправке формы настроек? Действие формы заключается в предоставлении options.php .

Единственный способ, с помощью которого я могу думать, это то, что после того, как эти ручные функции запустили свой код в admin_init , нужно запустить перенаправление на страницу настроек без параметров GET, но если я это сделаю, я потеряю свои уведомления администратора, я пытаясь показать пользователю.

Во всяком случае, были предложения относительно того, как я могу обойти эту проблему. Может быть, вы думаете, что есть лучший способ запустить эти ручные функции?

EDIT: полный код настройки: http://pastebin.com/Gk5RF5Lc

Почему API-интерфейс настроек отправляет эти параметры при отправке формы настроек?

Честно говоря, это не так. Как вы уже упоминали, ваша форма просто POST на options.php , которая, в свою очередь, обрабатывает запрос, обновляет базу данных и затем перенаправляет обратно на референт .

Как извлекается референт вниз до функции wp_get_referer() ;

 function wp_get_referer() { $ref = ''; if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) $ref = $_REQUEST['_wp_http_referer']; else if ( ! empty( $_SERVER['HTTP_REFERER'] ) ) $ref = $_SERVER['HTTP_REFERER']; if ( $ref !== $_SERVER['REQUEST_URI'] ) return $ref; return false; } 

Вот почему вас отправляют обратно на страницу параметров с параметрами действия, которые все еще существуют, потому что они присутствовали в $_SERVER['HTTP_REFERER'] .

Но вы также увидите, что вы можете отменить это поведение, разместив скрытый ввод внутри вашей формы;

 <input type="hidden" name="_wp_http_referer" value="<?php echo admin_url( 'options-general.php?page=wordpress-file-monitor-plus' ); ?>" /> 

Теперь options.php всегда будет перенаправлять обратно …

http://example.com/wp-admin/options-general.php?page=wordpress-file-monitor-plus

… независимо от того, что было в строке запроса ранее.