插件激活时设置默认设置值

时间:2015-12-03 作者:Ohsik

我已经在管理面板上设置了我的插件选项

   /**
     * Register and add settings
     */
    public function page_init()
    {        
        register_setting(
            \'my_option_group\', // Option group
            \'write_here_options\', // Option name
            array( $this, \'sanitize\' ) // Sanitize
        );

        add_settings_section(
            \'setting_section_id\', // ID
            \'Set Edit Page\', // Title
            array( $this, \'print_section_info\' ), // Callback
            \'write-here-setting\' // Page
        );  

        add_settings_field(
            "pid_num", 
            "Select Page >>", 
            array( $this, \'wh_select_list\' ),  
            "write-here-setting", 
            "setting_section_id"
        );

        add_settings_field(
            \'num_of_posts\', // ID
            \'Number of Posts to show\', // Title 
            array( $this, \'num_of_posts_callback\' ), // Callback
            \'write-here-setting\', // Page
            \'setting_section_id\' // Section           
        ); 

    }
因此,在DB中,我的插件设置保存在wp_options 列名称下的表option_namewrite_here_options 以我的情况为对象。

当人们激活插件时,我想在DB中保存默认值pid_num => 0num_of_posts => 10.

我该怎么做??

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

我添加了以下代码,以便在插件激活时将默认值设置为DB。

function write_here_activation_actions(){
    do_action( \'wp_writehere_extension_activation\' );
}
register_activation_hook( __FILE__, \'write_here_activation_actions\' );
// Set default values here
function write_here_default_options(){
    $default = array(
        \'pid_num\'     => \'0\',
        \'num_of_posts\'   => \'10\'
    );
    update_option( \'write_here_options\', $default );
}
add_action( \'wp_writehere_extension_activation\', \'write_here_default_options\' );

SO网友:s_ha_dum

您的代码肯定会使用get_option() 检索选项的值。get_option() 接受允许您指定默认值的第二个参数。使用它,而不是不必要地将值插入数据库。

get_option( $option, $default );
如果您担心第三方代码,那么option_{$option} filter 即使在那时,您也应该能够使用它来保留默认值:

116         /**
117          * Filter the value of an existing option.
118          *
119          * The dynamic portion of the hook name, `$option`, refers to the option name.
120          *
121          * @since 1.5.0 As \'option_\' . $setting
122          * @since 3.0.0
123          *
124          * @param mixed $value Value of the option. If stored serialized, it will be
125          *                     unserialized prior to being returned.
126          */
127         return apply_filters( \'option_\' . $option, maybe_unserialize( $value ) );

SO网友:Remzi Cavdar

使用add\\u选项而不是update\\u选项。如果您使用add\\u选项,现有选项将不会更新,并会执行检查以确保您没有添加受保护的WordPress选项。

看见add_optionupdate_option at developer.wordpress.org

// Activation
function name_plugin_activation(){
    do_action( \'name_plugin_default_options\' );
}
register_activation_hook( __FILE__, \'name_plugin_activation\' );


// Set default values here
function name_plugin_default_values(){

    // Form settings
    add_option(\'name_form_to\', \'[email protected]\');
    add_option(\'name_form_subject\', \'New\');


}
add_action( \'name_plugin_default_options\', \'name_plugin_default_values\' );

相关推荐

插件放置在/wp-content/plugins内的文件夹中时不保存值

我得到了WordPRess插件的以下代码,它在每个页面/后期编辑屏幕上添加了两个自定义输入。然后将这些值保存并输出到前端页面的标题中。如果代码位于内部,则可以正常工作。php文件并直接放入“wp内容/插件”。然而,如果我把它放在插件(如“wp-content/plugins/myplugin”)中自己的文件夹中,那么在通过编辑屏幕保存帖子/页面时,输入字段不会保存。此外,它不会向前端页面html标题部分输出任何内容。这似乎是一个被放弃的项目,所以我无法与原始开发人员一起制定解决方案。然而,代码中的某些内容