scottb
  • 0
Гуру

Почему страница параметров/настроек моего плагина может не загружаться?

  • 0

У меня проблема с одним сайтом, на котором установлен мой плагин. Страница «Настройки» не загружается. Когда я нажимаю «Настройки», он загружает страницу настроек, но страница пуста после 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. Хотя я не знаю почему.

Share
  1. Может быть, проблема с вызовом правил флеша? Пробовали без него? (Просто дикое предположение)..

    • 0
  2. Если бы мне пришлось рискнуть предположить причину проблемы, я бы сначала подумал о вызове правил сброса.

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

    define('WP_DEBUG', true);          // Turn on debug mode
    define('WP_DEBUG_LOG', true);      // Logs errors to wp-content/debug.log
    define('WP_DEBUG_DISPLAY', false); // Disable displaying errors
    

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

    Любые ошибки, показанные при включенной отладке? (или в журнале, если вы используете этот метод?)

    • 0
  3. Когда я использую предоставленный вами код, я вижу пункт меню «МОИ! Настройки» в качестве верхнего пункта в меню «Настройки» и имеет неожиданный URL-адрес.

    Вызов add_options_page должен быть заключен в функцию, связанную с admin_menu действием.

    function my_admin_menu() {
        add_options_page(
            'MY! Settings',
            'MY! Settings',
            'manage_options',
            'my-admin',
            'my_settings_admin'
        );
    }
    add_action( 'admin_menu', 'my_admin_menu' );
    

    В общем, используйте define( 'WP_DEBUG', true ) в своем wp-config.php, чтобы вы могли видеть ошибки и предупреждения.

    • 0

Оставить ответ

You must login to add an answer.