Title: wp_default_styles
Published: April 25, 2014
Last modified: February 24, 2026

---

# wp_default_styles( WP_Styles $styles )

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#wp--skip-link--target)

Assigns default styles to $styles object.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#description)󠁿

Nothing is returned, because the $styles parameter is passed by reference.
Meaning
that whatever object is passed will be updated without having to reassign the variable
that was passed back to the same value. This saves memory.

Adding default styles is not the only task, it also assigns the base_url property,
the default version, and text direction for the object.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#parameters)󠁿

 `$styles`[WP_Styles](https://developer.wordpress.org/reference/classes/wp_styles/)
required

## 󠀁[Source](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#source)󠁿

    ```php
    function wp_default_styles( $styles ) {
    	global $editor_styles;

    	/*
    	 * Include an unmodified $wp_version.
    	 *
    	 * Note: wp_get_wp_version() is not used here, as this file can be included
    	 * via wp-admin/load-scripts.php or wp-admin/load-styles.php, in which case
    	 * wp-includes/functions.php is not loaded.
    	 */
    	require ABSPATH . WPINC . '/version.php';

    	if ( ! defined( 'SCRIPT_DEBUG' ) ) {
    		/*
    		 * Note: str_contains() is not used here, as this file can be included
    		 * via wp-admin/load-scripts.php or wp-admin/load-styles.php, in which case
    		 * the polyfills from wp-includes/compat.php are not loaded.
    		 */
    		define( 'SCRIPT_DEBUG', false !== strpos( $wp_version, '-src' ) );
    	}

    	$guessurl = site_url();

    	if ( ! $guessurl ) {
    		$guessurl = wp_guess_url();
    	}

    	$styles->base_url        = $guessurl;
    	$styles->content_url     = defined( 'WP_CONTENT_URL' ) ? WP_CONTENT_URL : '';
    	$styles->default_version = get_bloginfo( 'version' );
    	$styles->text_direction  = function_exists( 'is_rtl' ) && is_rtl() ? 'rtl' : 'ltr';
    	$styles->default_dirs    = array( '/wp-admin/', '/wp-includes/css/' );

    	// Open Sans is no longer used by core, but may be relied upon by themes and plugins.
    	$open_sans_font_url = '';

    	/*
    	 * translators: If there are characters in your language that are not supported
    	 * by Open Sans, translate this to 'off'. Do not translate into your own language.
    	 */
    	if ( 'off' !== _x( 'on', 'Open Sans font: on or off' ) ) {
    		$subsets = 'latin,latin-ext';

    		/*
    		 * translators: To add an additional Open Sans character subset specific to your language,
    		 * translate this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language.
    		 */
    		$subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)' );

    		if ( 'cyrillic' === $subset ) {
    			$subsets .= ',cyrillic,cyrillic-ext';
    		} elseif ( 'greek' === $subset ) {
    			$subsets .= ',greek,greek-ext';
    		} elseif ( 'vietnamese' === $subset ) {
    			$subsets .= ',vietnamese';
    		}

    		// Hotlink Open Sans, for now.
    		$open_sans_font_url = "https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset=$subsets&display=fallback";
    	}

    	// Register a stylesheet for the selected admin color scheme.
    	$styles->add( 'colors', true, array( 'wp-admin', 'buttons' ) );

    	$suffix = SCRIPT_DEBUG ? '' : '.min';

    	// Admin CSS.
    	$styles->add( 'common', "/wp-admin/css/common$suffix.css" );
    	$styles->add( 'forms', "/wp-admin/css/forms$suffix.css" );
    	$styles->add( 'admin-menu', "/wp-admin/css/admin-menu$suffix.css" );
    	$styles->add( 'dashboard', "/wp-admin/css/dashboard$suffix.css" );
    	$styles->add( 'list-tables', "/wp-admin/css/list-tables$suffix.css" );
    	$styles->add( 'edit', "/wp-admin/css/edit$suffix.css" );
    	$styles->add( 'revisions', "/wp-admin/css/revisions$suffix.css" );
    	$styles->add( 'media', "/wp-admin/css/media$suffix.css" );
    	$styles->add( 'themes', "/wp-admin/css/themes$suffix.css" );
    	$styles->add( 'about', "/wp-admin/css/about$suffix.css" );
    	$styles->add( 'nav-menus', "/wp-admin/css/nav-menus$suffix.css" );
    	$styles->add( 'widgets', "/wp-admin/css/widgets$suffix.css", array( 'wp-pointer' ) );
    	$styles->add( 'site-icon', "/wp-admin/css/site-icon$suffix.css" );
    	$styles->add( 'l10n', "/wp-admin/css/l10n$suffix.css" );
    	$styles->add( 'code-editor', "/wp-admin/css/code-editor$suffix.css", array( 'wp-codemirror' ) );
    	$styles->add( 'site-health', "/wp-admin/css/site-health$suffix.css" );

    	$styles->add( 'wp-admin', false, array( 'dashicons', 'common', 'forms', 'admin-menu', 'dashboard', 'list-tables', 'edit', 'revisions', 'media', 'themes', 'about', 'nav-menus', 'widgets', 'site-icon', 'l10n' ) );

    	$styles->add( 'login', "/wp-admin/css/login$suffix.css", array( 'dashicons', 'buttons', 'forms', 'l10n' ) );
    	$styles->add( 'install', "/wp-admin/css/install$suffix.css", array( 'dashicons', 'buttons', 'forms', 'l10n' ) );
    	$styles->add( 'wp-color-picker', "/wp-admin/css/color-picker$suffix.css" );
    	$styles->add( 'customize-controls', "/wp-admin/css/customize-controls$suffix.css", array( 'wp-admin', 'colors', 'imgareaselect' ) );
    	$styles->add( 'customize-widgets', "/wp-admin/css/customize-widgets$suffix.css", array( 'wp-admin', 'colors' ) );
    	$styles->add( 'customize-nav-menus', "/wp-admin/css/customize-nav-menus$suffix.css", array( 'wp-admin', 'colors' ) );

    	// Common dependencies.
    	$styles->add( 'buttons', "/wp-includes/css/buttons$suffix.css" );
    	$styles->add( 'dashicons', "/wp-includes/css/dashicons$suffix.css" );

    	// Includes CSS.
    	$styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css", array( 'dashicons' ) );
    	$styles->add( 'wp-auth-check', "/wp-includes/css/wp-auth-check$suffix.css", array( 'dashicons' ) );
    	$styles->add( 'editor-buttons', "/wp-includes/css/editor$suffix.css", array( 'dashicons' ) );
    	$styles->add( 'media-views', "/wp-includes/css/media-views$suffix.css", array( 'buttons', 'dashicons', 'wp-mediaelement' ) );
    	$styles->add( 'wp-pointer', "/wp-includes/css/wp-pointer$suffix.css", array( 'dashicons' ) );
    	$styles->add( 'customize-preview', "/wp-includes/css/customize-preview$suffix.css", array( 'dashicons' ) );
    	$styles->add( 'wp-empty-template-alert', "/wp-includes/css/wp-empty-template-alert$suffix.css" );

    	// External libraries and friends.
    	$styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.8' );
    	$styles->add( 'wp-jquery-ui-dialog', "/wp-includes/css/jquery-ui-dialog$suffix.css", array( 'dashicons' ) );
    	$styles->add( 'mediaelement', '/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css', array(), '4.2.17' );
    	$styles->add( 'wp-mediaelement', "/wp-includes/js/mediaelement/wp-mediaelement$suffix.css", array( 'mediaelement' ) );
    	$styles->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css', array( 'dashicons' ) );
    	$styles->add( 'wp-codemirror', '/wp-includes/js/codemirror/codemirror.min.css', array(), '5.29.1-alpha-ee20357' );

    	// Deprecated CSS.
    	$styles->add( 'deprecated-media', "/wp-admin/css/deprecated-media$suffix.css" );
    	$styles->add( 'farbtastic', "/wp-admin/css/farbtastic$suffix.css", array(), '1.3u1' );
    	$styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.min.css', array(), '0.9.15' );
    	$styles->add( 'colors-fresh', false, array( 'wp-admin', 'buttons' ) ); // Old handle.
    	$styles->add( 'open-sans', $open_sans_font_url ); // No longer used in core as of 4.6.
    	$styles->add( 'wp-embed-template-ie', false );
    	$styles->add_data( 'wp-embed-template-ie', 'conditional', '_required-conditional-dependency_' );

    	// Noto Serif is no longer used by core, but may be relied upon by themes and plugins.
    	$fonts_url = '';

    	/*
    	 * translators: Use this to specify the proper Google Font name and variants
    	 * to load that is supported by your language. Do not translate.
    	 * Set to 'off' to disable loading.
    	 */
    	$font_family = _x( 'Noto Serif:400,400i,700,700i', 'Google Font Name and Variants' );
    	if ( 'off' !== $font_family ) {
    		$fonts_url = 'https://fonts.googleapis.com/css?family=' . urlencode( $font_family );
    	}
    	$styles->add( 'wp-editor-font', $fonts_url ); // No longer used in core as of 5.7.
    	$block_library_theme_path = WPINC . "/css/dist/block-library/theme$suffix.css";
    	$styles->add( 'wp-block-library-theme', "/$block_library_theme_path" );
    	$styles->add_data( 'wp-block-library-theme', 'path', ABSPATH . $block_library_theme_path );

    	$classic_theme_styles_path = WPINC . "/css/classic-themes$suffix.css";
    	$styles->add( 'classic-theme-styles', "/$classic_theme_styles_path" );
    	$styles->add_data( 'classic-theme-styles', 'path', ABSPATH . $classic_theme_styles_path );

    	$styles->add(
    		'wp-reset-editor-styles',
    		"/wp-includes/css/dist/block-library/reset$suffix.css",
    		array( 'common', 'forms' ) // Make sure the reset is loaded after the default WP Admin styles.
    	);

    	$styles->add(
    		'wp-editor-classic-layout-styles',
    		"/wp-includes/css/dist/edit-post/classic$suffix.css",
    		array()
    	);

    	$styles->add(
    		'wp-block-editor-content',
    		"/wp-includes/css/dist/block-editor/content$suffix.css",
    		array( 'wp-components' )
    	);

    	// Only add CONTENT styles here that should be enqueued in the iframe!
    	$wp_edit_blocks_dependencies = array(
    		'wp-components',
    		/*
    		 * This needs to be added before the block library styles,
    		 * The block library styles override the "reset" styles.
    		 */
    		'wp-reset-editor-styles',
    		'wp-block-library',
    		'wp-block-editor-content',
    	);

    	// Only load the default layout and margin styles for themes without theme.json file.
    	if ( ! wp_theme_has_theme_json() ) {
    		$wp_edit_blocks_dependencies[] = 'wp-editor-classic-layout-styles';
    	}

    	if (
    		current_theme_supports( 'wp-block-styles' ) &&
    		( ! is_array( $editor_styles ) || count( $editor_styles ) === 0 )
    	) {
    		/*
    		 * Include opinionated block styles if the theme supports block styles and
    		 * no $editor_styles are declared, so the editor never appears broken.
    		 */
    		$wp_edit_blocks_dependencies[] = 'wp-block-library-theme';
    	}

    	$styles->add(
    		'wp-edit-blocks',
    		"/wp-includes/css/dist/block-library/editor$suffix.css",
    		$wp_edit_blocks_dependencies
    	);

    	$package_styles = array(
    		'block-editor'         => array( 'wp-components', 'wp-preferences' ),
    		'block-library'        => array(),
    		'block-directory'      => array(),
    		'components'           => array(),
    		'commands'             => array( 'wp-components' ),
    		'edit-post'            => array(
    			'wp-components',
    			'wp-block-editor',
    			'wp-editor',
    			'wp-edit-blocks',
    			'wp-block-library',
    			'wp-commands',
    			'wp-preferences',
    		),
    		'editor'               => array(
    			'wp-components',
    			'wp-block-editor',
    			'wp-reusable-blocks',
    			'wp-patterns',
    			'wp-preferences',
    		),
    		'format-library'       => array(),
    		'list-reusable-blocks' => array( 'wp-components' ),
    		'reusable-blocks'      => array( 'wp-components' ),
    		'patterns'             => array( 'wp-components' ),
    		'preferences'          => array( 'wp-components' ),
    		'nux'                  => array( 'wp-components' ),
    		'widgets'              => array(
    			'wp-components',
    		),
    		'edit-widgets'         => array(
    			'wp-widgets',
    			'wp-block-editor',
    			'wp-editor',
    			'wp-edit-blocks',
    			'wp-block-library',
    			'wp-patterns',
    			'wp-preferences',
    		),
    		'customize-widgets'    => array(
    			'wp-widgets',
    			'wp-block-editor',
    			'wp-editor',
    			'wp-edit-blocks',
    			'wp-block-library',
    			'wp-patterns',
    			'wp-preferences',
    		),
    		'edit-site'            => array(
    			'wp-components',
    			'wp-block-editor',
    			'wp-editor',
    			'wp-edit-blocks',
    			'wp-commands',
    			'wp-preferences',
    		),
    	);

    	foreach ( $package_styles as $package => $dependencies ) {
    		$handle = 'wp-' . $package;
    		$path   = "/wp-includes/css/dist/$package/style$suffix.css";

    		if ( 'block-library' === $package && wp_should_load_separate_core_block_assets() ) {
    			$path = "/wp-includes/css/dist/$package/common$suffix.css";
    		}
    		$styles->add( $handle, $path, $dependencies );
    		$styles->add_data( $handle, 'path', ABSPATH . $path );
    	}

    	// RTL CSS.
    	$rtl_styles = array(
    		// Admin CSS.
    		'common',
    		'forms',
    		'admin-menu',
    		'dashboard',
    		'list-tables',
    		'edit',
    		'revisions',
    		'media',
    		'themes',
    		'about',
    		'nav-menus',
    		'widgets',
    		'site-icon',
    		'l10n',
    		'install',
    		'wp-color-picker',
    		'customize-controls',
    		'customize-widgets',
    		'customize-nav-menus',
    		'customize-preview',
    		'login',
    		'site-health',
    		'wp-empty-template-alert',
    		// Includes CSS.
    		'buttons',
    		'admin-bar',
    		'wp-auth-check',
    		'editor-buttons',
    		'media-views',
    		'wp-pointer',
    		'wp-jquery-ui-dialog',
    		// Package styles.
    		'wp-reset-editor-styles',
    		'wp-editor-classic-layout-styles',
    		'wp-block-library-theme',
    		'wp-edit-blocks',
    		'wp-block-editor',
    		'wp-block-library',
    		'wp-block-directory',
    		'wp-commands',
    		'wp-components',
    		'wp-customize-widgets',
    		'wp-edit-post',
    		'wp-edit-site',
    		'wp-edit-widgets',
    		'wp-editor',
    		'wp-format-library',
    		'wp-list-reusable-blocks',
    		'wp-reusable-blocks',
    		'wp-patterns',
    		'wp-nux',
    		'wp-widgets',
    		// Deprecated CSS.
    		'deprecated-media',
    		'farbtastic',
    	);

    	foreach ( $rtl_styles as $rtl_style ) {
    		$styles->add_data( $rtl_style, 'rtl', 'replace' );
    		if ( $suffix ) {
    			$styles->add_data( $rtl_style, 'suffix', $suffix );
    		}
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/script-loader.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/script-loader.php#L1546)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/script-loader.php#L1546-L1878)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#related)󠁿

| Uses | Description | 
| [wp_theme_has_theme_json()](https://developer.wordpress.org/reference/functions/wp_theme_has_theme_json/)`wp-includes/global-styles-and-settings.php` |

Checks whether a theme or its parent has a theme.json file.

  | 
| [wp_should_load_separate_core_block_assets()](https://developer.wordpress.org/reference/functions/wp_should_load_separate_core_block_assets/)`wp-includes/script-loader.php` |

Checks whether separate styles should be loaded for core blocks.

  | 
| [wp_guess_url()](https://developer.wordpress.org/reference/functions/wp_guess_url/)`wp-includes/functions.php` |

Guesses the URL for the site.

  | 
| [is_rtl()](https://developer.wordpress.org/reference/functions/is_rtl/)`wp-includes/l10n.php` |

Determines whether the current locale is right-to-left (RTL).

  | 
| [site_url()](https://developer.wordpress.org/reference/functions/site_url/)`wp-includes/link-template.php` |

Retrieves the URL for the current site where WordPress application files (e.g. wp-blog-header.php or the wp-admin/ folder) are accessible.

  | 
| [current_theme_supports()](https://developer.wordpress.org/reference/functions/current_theme_supports/)`wp-includes/theme.php` |

Checks a theme’s support for a given feature.

  | 
| [_x()](https://developer.wordpress.org/reference/functions/_x/)`wp-includes/l10n.php` |

Retrieves translated string with gettext context.

  | 
| [get_bloginfo()](https://developer.wordpress.org/reference/functions/get_bloginfo/)`wp-includes/general-template.php` |

Retrieves information about the current site.

  |

[Show 3 more](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/wp_default_styles/?output_format=md#changelog)󠁿

| Version | Description | 
| [2.6.0](https://developer.wordpress.org/reference/since/2.6.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_default_styles%2F)
before being able to contribute a note or feedback.