У меня проблема с одним сайтом, на котором установлен мой плагин. Страница «Настройки» не загружается. Когда я нажимаю «Настройки», он загружает страницу настроек, но страница пуста после nag div «Upgrade to 3.1», как будто там был die().
У меня есть два файла, plugin.php и plugin-admin.php.
У меня есть код в plugin.php для настройки страницы администратора:
$my_dir = plugins_url('/img', __FILE__);
add_options_page(
'MY! Settings',
'MY! Settings',
'manage_options',
'my-plugin-admin.php',
'my_settings_admin',
$my_dir.'/favicon.png', 'top'
);
register_setting( 'my_settings_options', 'my_settings', 'my_settings_validate' );
function my_settings_admin(){
global $wp_rewrite;
$wp_rewrite->flush_rules();
include_once dirname(__FILE__) . '/my-plugin-admin.php';
}
define( 'my_BASENAME', plugin_basename( __FILE__ ) );
define( 'my_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
define( 'my_FILENAME', str_replace( my_BASEFOLDER.'/', '', plugin_basename(__FILE__)));
Ссылка «Мои настройки» отображается в меню «Настройки» нормально, и кажется, что ссылка ведет на правильную страницу, но скрипт не загружается, и внутри my-plugin-admin.php ничего не отслеживается.
Есть идеи?
ОБНОВЛЕНИЕ: с помощью t31os, вот обновленная функция, которая устраняет проблему:
function my_settings_admin(){
include_once dirname(__FILE__) . '/my-plugin-admin.php';
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
Мне просто пришлось переместить правила wp_rewrite и flush после оператора include. Хотя я не знаю почему.
Может быть, проблема с вызовом правил флеша? Пробовали без него? (Просто дикое предположение)..
@t31os: Бинго. Пожалуйста, сделайте это своим ответом, если хотите, и я проголосую и выберу. Мне пришлось закомментировать правила сброса. Почему?
Спасибо. Вот оно. Мне просто нужно было переместить правила сброса после оператора include. Хотя я еще не знаю, почему
Спасибо, Энди, я завернул его в функцию, моя ошибка, что я не указал это.
Проблема в том, как указал t31os, что правила флеша. Мне пришлось разместить их после включения один раз, а не до. Теперь скрипт загружается. Однако при включенной отладке мои щелчки для сохранения параметров направляются в options.php, а не обратно к параметрам плагина, как ожидалось.
Если бы мне пришлось рискнуть предположить причину проблемы, я бы сначала подумал о вызове правил сброса.
Как сказал Энди, наличие отладки очень помогает, и если вы действительно не хотите видеть ошибки, вы всегда можете вместо этого использовать журнал отладки, используя следующее в своем файле конфигурации.
Что касается обновления ваших настроек без перенаправления, обычно это происходит, когда одноразовые номера отсутствуют или неверны, хотя я допускаю, что в вашем случае это может быть что-то еще.
Любые ошибки, показанные при включенной отладке? (или в журнале, если вы используете этот метод?)
Когда я использую предоставленный вами код, я вижу пункт меню «МОИ! Настройки» в качестве верхнего пункта в меню «Настройки» и имеет неожиданный URL-адрес.
Вызов
add_options_page
должен быть заключен в функцию, связанную сadmin_menu
действием.В общем, используйте
define( 'WP_DEBUG', true )
в своемwp-config.php
, чтобы вы могли видеть ошибки и предупреждения.