web-dev-qa-db-ja.com

起動時にプラグインがデフォルト設定値を設定

私は管理者パネルで私のプラグインオプションを設定しました。

   /**
     * 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としてオブジェクトとして保存されました。

人々がプラグインをアクティブにしたとき、私はpid_num => 0num_of_posts => 10のためにDBにデフォルト値を保存したいです。

どうやってこの作品を作るの?

1
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' );
0
Ohsik

あなたのコードは確かに get_option() をあなたのオプションの値を取得するために使うでしょう。 get_option()は、デフォルトを指定することを可能にする2番目の引数を受け入れます。データベースに値を不必要に挿入する代わりにそれを使用してください。

get_option( $option, $default );

あなたがサードパーティのコードを心配しているのなら、 option_{$option}フィルタ があります。

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 ) );
1
s_ha_dum

Update_optionの代わりにadd_optionを使用してください。 add_optionを使用した場合、既存のオプションは更新されず、保護されたWordPressオプションを追加していないことを確認するためのチェックが行われます。

Developer.wordpress.orgの add_option および update_optionを参照してください

// 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' );
0
Remzi Cavdar