是什么原因导致我的插件的选项/设置页面无法加载?

时间:2011-03-29 作者:Scott B

我在一个安装了我的插件的网站上遇到了问题。“设置”页面将不会加载。当我单击“settings”(设置)时,它会加载settings(设置)页面,但在“Upgrade to 3.1”(升级到3.1)nag div之后,页面是空白的,就好像那里有一个die()。

我有两个文件,插件。php和插件管理。php

插件中有代码。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__)));
“我的设置”链接显示在“设置”菜单下,链接似乎指向正确的页面,但脚本不会加载,也不会在我的插件管理中跟踪任何内容。php

有什么想法吗?

更新:借助t31os帮助,以下是修复问题的更新函数:

function my_settings_admin(){
    include_once dirname(__FILE__) . \'/my-plugin-admin.php\';
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
我只需在include语句之后移动wp\\u重写和刷新规则。虽然我不知道为什么。

2 个回复
最合适的回答,由SO网友:t31os 整理而成

如果我不得不大胆猜测问题的原因,我最初的想法是使用同花顺规则。

正如Andy所说,启用调试非常有帮助,如果您真的不想看到错误,您可以使用调试日志,在配置文件中使用以下内容。。

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
关于你的设置更新不重定向,通常是在nonce丢失或不正确时发生的,尽管我承认这可能是你的情况。

调试打开时是否显示任何错误?(如果使用该方法,也可以在日志中?)

SO网友:Andy

当我使用您提供的代码时,我将“我的!设置”菜单项视为“设置”菜单中的顶部项,并且它有一个意外的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 因此,您可以看到错误和警告。

结束

相关推荐

Adding Visibility Options

我已经搜索了一些插件,但虽然有些插件完成了一半的任务,但它们通常非常复杂。我想在创建页面时向“可见性”菜单添加选项(和post,但页面更紧急)。这些选项必须是:“仅对登录用户可见”和“仅对来宾可见”(即未登录)有没有人知道插件或并为我指明了正确的方向来编写自己的插件?EDIT: 这方面的一个用例是;仅向“来宾”显示注册和登录页面。登录用户不需要查看这些页面。