0

我花了很多时间来弄清楚这一点。如何在安装插件时自动填充字段的默认值或插入数据库。

我已经尝试了以下这些代码,但没有任何效果:

register_activation_hook(__FILE__, 'just_a_handler');
function just_a_handler($plugin_options) {
$defaults = array(
      'youtube_keyword' => 'keyword here',
      'youtube_author' => 'author here',
      'youtube_content' => 'by_keyword',
      'youtube_width' => '500',
      'youtube_height' => '350',
      'youtube_number_of_videos' => '5',
      'youtube_preview' => '',
    );
    $plugin_options = wp_parse_args(get_option('youtube_plugin_options'), $defaults);
}

和这个:

register_activation_hook(__FILE__, 'just_a_handler');
    function just_a_handler() {
     add_option("youtube_keyword", 'keyword here', '', 'yes');
    add_option("youtube_author", 'author here', '', 'yes');
}
4

1 回答 1

0

要使用一些默认值自动填充选项,您可以执行以下操作。根据您执行此代码的时间,我认为在使用默认数据填充它之前检查该选项是否不存在是个好主意。另请记住,如果您要存储数组,则需要在将数据添加到数据库之前对其进行序列化。数据库只能存储数字、文本和日期。序列化获取一个数组并将其转换为序列化字符串。

function init_options() {
    $retrieved_options = array();
    $defaults = array(
      'youtube_keyword' => 'keyword here',
      'youtube_author' => 'author here',
      'youtube_content' => 'by_keyword',
      'youtube_width' => '500',
      'youtube_height' => '350',
      'youtube_number_of_videos' => '5',
      'youtube_preview' => '',
    );

    // Check to see if the option exists
    $retrieved_options = maybe_unserialize( get_option( 'youtube_plugin_options' ) );

    if ( $retrieved_options == '' ) {
        // There are no options set
        add_option( 'youtube_plugin_options', serialize( $defaults ) );
    } elseif ( count( $retrieved_options ) == 0 ) {
        // All options are blank
        update_option( 'youtube_plugin_options', serialize( $defaults ) );
    }
}

register_activation_hook( __FILE__, 'init_options' );
于 2013-02-06T18:16:33.473 回答