设置API消息错误是全局的

时间:2015-03-02 作者:Ivan

我不是舒尔如何真正使用设置api在我的菜单页面上显示错误消息。例如,我创建菜单页(eng.product),并在那里注册两个输入文本字段,如示例所示。在自定义页面中提交表单后,错误消息是所有选项中的一些页面“阅读、书写、预链接等”。Whay不仅在我创建的页面上。

下面是我如何使用error函数的代码。也许这是我使用它的错误方式,因此我发布了以下问题:

        /**
         * Init Admin Options
         *
         */
        public function initAdminOptions()
        {
            // Init settings options
            $this->createSettingSection();
            $this->createOptionFields();
            $this->registerSettingsOptions();

            $this->options = get_option(\'isl_ecomerce\');

            if(isset($_POST[\'submit\'])) {

                $this->options = array(
                    \'product_name\'  => sanitize_text_field($_POST[\'product_name\']),
                    \'product_price\' => sanitize_text_field($_POST[\'product_price\']),
                    \'product_desc\'  => esc_textarea($_POST[\'product_desc\'])
                );
                // Validate fields
                if($this->options[\'product_name\'] == \'\' || $this->options[\'product_price\'] == \'\') {
                    add_settings_error(\'product_message\', \'\', \'All field required!\', \'error\');

                    return;
                }else {
                    // Check if table exist
                    if( false === get_option(\'isl_ecomerce\')) {
                        add_option(\'isl_ecomerce\', $this->options);
                        add_settings_error(\'product_message\', \'\', \'Settings Saved...\', \'updated\');
                    }else {
                        // Already exist? Update it
                        update_option(\'isl_ecomerce\', $this->options);
                        add_settings_error(\'isl_ecomerce\', \'\', \'Settings Updated..\', \'updated\');
                    }
                }
            }
        }
我为settings\\u错误注册挂钩

/**
 * Settings Errors 
 *
 */
public function option_notices()
{
        settings_errors(\'product_message\');
}
在我的\\uu构造中,我执行以下操作:

 add_action(\'admin_notices\', array(&$this, \'option_notices\'));
和选项页

/**
 * Create Options Page
 *
 */
public function createOptionsPage()
{
    add_menu_page(
        __(\'Products\', \'domain\'),
        __(\'Products\', \'domain\'),
        \'manage_options\',
        \'products_page\',
        array(&$this, \'optionsPageCallback\')
    );
}
在此之后,我得到了一些消息“所有字段都是必需的!”,“已保存设置…”,“已更新设置…”在wp admin的所有页面上。如何仅在我的页面中显示

1 个回复
SO网友:Saurabh Shukla

第一个参数的设置不是选项键。这是您注册时使用的密钥register_setting

register_setting( \'settings_unique_key4172_91h, \'option_key\', \'name_of_sanitiser_function\' );
然后可以添加如下设置错误,inside 回调

function name_of_sanitiser_function(){

    add_settings_error(
        \'settings_unique_key4172_91h\',
        esc_attr( \'settings_updated\' ),
        $message,
        $type
    );

}
您可能需要一些教程。我个人同意,这非常令人困惑:

http://www.presscoders.com/2010/05/wordpress-settings-api-explained/

http://ottopress.com/2009/wordpress-settings-api-tutorial/

结束

相关推荐

在加载plugins_后,get_plugins()不工作

知道为什么下面的代码function my_plugin_load() { get_plugins(); } add_action( \'plugins_loaded\', \'my_plugin_load\' ); 抛出此错误?Fatal error: 不应调用未定义的函数get\\u plugins()get_plugins() 定义在plugins_loaded 胡克开火了?如果不是,那么什么才是合适的钩子呢?(这个钩子应该启动插件的引导/加载过程)