populate_options( array $options = array() )

Create WordPress options and set the default values.

Parameters

$options

array

Optional

Custom option $key => $value pairs to use.

Default: array()

Source

File: wp-admin/includes/schema.php.

View all references

function populate_options( array $options = array() ) {

global $wpdb, $wp_db_version, $wp_current_db_version;

$guessurl = wp_guess_url();

/**

* Fires before creating WordPress options and populating their default values.

*

* @since 2.6.0

*/

do_action( "populate_options" );

// If WP_DEFAULT_THEME doesn"t exist, fall back to the latest core default theme.

$stylesheet = WP_DEFAULT_THEME;

$template = WP_DEFAULT_THEME;

$theme = wp_get_theme( WP_DEFAULT_THEME );

if ( ! $theme->exists() ) {

$theme = WP_Theme::get_core_default_theme();

}

// If we can"t find a core default theme, WP_DEFAULT_THEME is the best we can do.

if ( $theme ) {

$stylesheet = $theme->get_stylesheet();

$template = $theme->get_template();

}

$timezone_string = "";

$gmt_offset = 0;

/*

* translators: default GMT offset or timezone string. Must be either a valid offset (-12 to 14)

* or a valid timezone string (America/New_York). See https://www.php.net/manual/en/timezones.php

* for all timezone strings currently supported by PHP.

*

* Important: When a previous timezone string, like `Europe/Kiev`, has been superseded by an

* updated one, like `Europe/Kyiv`, as a rule of thumb, the **old** timezone name should be used

* in the "translation" to allow for the default timezone setting to be PHP cross-version compatible,

* as old timezone names will be recognized in new PHP versions, while new timezone names cannot

* be recognized in old PHP versions.

*

* To verify which timezone strings are available in the _oldest_ PHP version supported, you can

* use https://3v4l.org/6YQAt#v5.6.20 and replace the "BR" (Brazil) in the code line with the

* country code for which you want to look up the supported timezone names.

*/

$offset_or_tz = _x( "0", "default GMT offset or timezone string" );

if ( is_numeric( $offset_or_tz ) ) {

$gmt_offset = $offset_or_tz;

} elseif ( $offset_or_tz && in_array( $offset_or_tz, timezone_identifiers_list( DateTimeZone::ALL_WITH_BC ), true ) ) {

$timezone_string = $offset_or_tz;

}

$defaults = array(

"siteurl" => $guessurl,

"home" => $guessurl,

"blogname" => __( "My Site" ),

"blogdescription" => "",

"users_can_register" => 0,

"admin_email" => "you@example.com",

/* translators: Default start of the week. 0 = Sunday, 1 = Monday. */

"start_of_week" => _x( "1", "start of week" ),

"use_balanceTags" => 0,

"use_smilies" => 1,

"require_name_email" => 1,

"comments_notify" => 1,

"posts_per_rss" => 10,

"rss_use_excerpt" => 0,

"mailserver_url" => "mail.example.com",

"mailserver_login" => "login@example.com",

"mailserver_pass" => "password",

"mailserver_port" => 110,

"default_category" => 1,

"default_comment_status" => "open",

"default_ping_status" => "open",

"default_pingback_flag" => 1,

"posts_per_page" => 10,

/* translators: Default date format, see https://www.php.net/manual/datetime.format.php */

"date_format" => __( "F j, Y" ),

/* translators: Default time format, see https://www.php.net/manual/datetime.format.php */

"time_format" => __( "g:i a" ),

/* translators: Links last updated date format, see https://www.php.net/manual/datetime.format.php */

"links_updated_date_format" => __( "F j, Y g:i a" ),

"comment_moderation" => 0,

"moderation_notify" => 1,

"permalink_structure" => "",

"rewrite_rules" => "",

"hack_file" => 0,

"blog_charset" => "UTF-8",

"moderation_keys" => "",

"active_plugins" => array(),

"category_base" => "",

"ping_sites" => "http://rpc.pingomatic.com/",

"comment_max_links" => 2,

"gmt_offset" => $gmt_offset,

// 1.5.0

"default_email_category" => 1,

"recently_edited" => "",

"template" => $template,

"stylesheet" => $stylesheet,

"comment_registration" => 0,

"html_type" => "text/html",

// 1.5.1

"use_trackback" => 0,

// 2.0.0

"default_role" => "subscriber",

"db_version" => $wp_db_version,

// 2.0.1

"uploads_use_yearmonth_folders" => 1,

"upload_path" => "",

// 2.1.0

"blog_public" => "1",

"default_link_category" => 2,

"show_on_front" => "posts",

// 2.2.0

"tag_base" => "",

// 2.5.0

"show_avatars" => "1",

"avatar_rating" => "G",

"upload_url_path" => "",

"thumbnail_size_w" => 150,

"thumbnail_size_h" => 150,

"thumbnail_crop" => 1,

"medium_size_w" => 300,

"medium_size_h" => 300,

// 2.6.0

"avatar_default" => "mystery",

// 2.7.0

"large_size_w" => 1024,

"large_size_h" => 1024,

"image_default_link_type" => "none",

"image_default_size" => "",

"image_default_align" => "",

"close_comments_for_old_posts" => 0,

"close_comments_days_old" => 14,

"thread_comments" => 1,

"thread_comments_depth" => 5,

"page_comments" => 0,

"comments_per_page" => 50,

"default_comments_page" => "newest",

"comment_order" => "asc",

"sticky_posts" => array(),

"widget_categories" => array(),

"widget_text" => array(),

"widget_rss" => array(),

"uninstall_plugins" => array(),

// 2.8.0

"timezone_string" => $timezone_string,

// 3.0.0

"page_for_posts" => 0,

"page_on_front" => 0,

// 3.1.0

"default_post_format" => 0,

// 3.5.0

"link_manager_enabled" => 0,

// 4.3.0

"finished_splitting_shared_terms" => 1,

"site_icon" => 0,

// 4.4.0

"medium_large_size_w" => 768,

"medium_large_size_h" => 0,

// 4.9.6

"wp_page_for_privacy_policy" => 0,

// 4.9.8

"show_comments_cookies_opt_in" => 1,

// 5.3.0

"admin_email_lifespan" => ( time() + 6 * MONTH_IN_SECONDS ),

// 5.5.0

"disallowed_keys" => "",

"comment_previously_approved" => 1,

"auto_plugin_theme_update_emails" => array(),

// 5.6.0

"auto_update_core_dev" => "enabled",

"auto_update_core_minor" => "enabled",

/*

* Default to enabled for new installs.

* See https://core.trac.wordpress.org/ticket/51742.

*/

"auto_update_core_major" => "enabled",

// 5.8.0

"wp_force_deactivated_plugins" => array(),

);

// 3.3.0

if ( ! is_multisite() ) {

$defaults["initial_db_version"] = ! empty( $wp_current_db_version ) && $wp_current_db_version < $wp_db_version

? $wp_current_db_version : $wp_db_version;

}

// 3.0.0 multisite.

if ( is_multisite() ) {

$defaults["permalink_structure"] = "/%year%/%monthnum%/%day%/%postname%/";

}

$options = wp_parse_args( $options, $defaults );

// Set autoload to no for these options.

$fat_options = array(

"moderation_keys",

"recently_edited",

"disallowed_keys",

"uninstall_plugins",

"auto_plugin_theme_update_emails",

);

$keys = """ . implode( "", "", array_keys( $options ) ) . """;

$existing_options = $wpdb->get_col( "SELECT option_name FROM $wpdb->options WHERE option_name in ( $keys )" ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared

$insert = "";

foreach ( $options as $option => $value ) {

if ( in_array( $option, $existing_options, true ) ) {

continue;

}

if ( in_array( $option, $fat_options, true ) ) {

$autoload = "no";

} else {

$autoload = "yes";

}

if ( is_array( $value ) ) {

$value = serialize( $value );

}

if ( ! empty( $insert ) ) {

$insert .= ", ";

}

$insert .= $wpdb->prepare( "(%s, %s, %s)", $option, $value, $autoload );

}

if ( ! empty( $insert ) ) {

$wpdb->query( "INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES " . $insert ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared

}

// In case it is set, but blank, update "home".

if ( ! __get_option( "home" ) ) {

update_option( "home", $guessurl );

}

// Delete unused options.

$unusedoptions = array(

"blodotgsping_url",

"bodyterminator",

"emailtestonly",

"phoneemail_separator",

"smilies_directory",

"subjectprefix",

"use_bbcode",

"use_blodotgsping",

"use_phoneemail",

"use_quicktags",

"use_weblogsping",

"weblogs_cache_file",

"use_preview",

"use_htmltrans",

"smilies_directory",

"fileupload_allowedusers",

"use_phoneemail",

"default_post_status",

"default_post_category",

"archive_mode",

"time_difference",

"links_minadminlevel",

"links_use_adminlevels",

"links_rating_type",

"links_rating_char",

"links_rating_ignore_zero",

"links_rating_single_image",

"links_rating_image0",

"links_rating_image1",

"links_rating_image2",

"links_rating_image3",

"links_rating_image4",

"links_rating_image5",

"links_rating_image6",

"links_rating_image7",

"links_rating_image8",

"links_rating_image9",

"links_recently_updated_time",

"links_recently_updated_prepend",

"links_recently_updated_append",

"weblogs_cacheminutes",

"comment_allowed_tags",

"search_engine_friendly_urls",

"default_geourl_lat",

"default_geourl_lon",

"use_default_geourl",

"weblogs_xml_url",

"new_users_can_blog",

"_wpnonce",

"_wp_http_referer",

"Update",

"action",

"rich_editing",

"autosave_interval",

"deactivated_plugins",

"can_compress_scripts",

"page_uris",

"update_core",

"update_plugins",

"update_themes",

"doing_cron",

"random_seed",

"rss_excerpt_length",

"secret",

"use_linksupdate",

"default_comment_status_page",

"wporg_popular_tags",

"what_to_show",

"rss_language",

"language",

"enable_xmlrpc",

"enable_app",

"embed_autourls",

"default_post_edit_rows",

"gzipcompression",

"advanced_edit",

);

foreach ( $unusedoptions as $option ) {

delete_option( $option );

}

// Delete obsolete magpie stuff.

$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name REGEXP "^rss_[0-9a-f]{32}(_ts)?$"" );

// Clear expired transients.

delete_expired_transients( true );

}

Leave a Reply

Your email address will not be published. Required fields are marked *