Add Admin CSS
By Scott Reilly
Description
This plugin allows you to easily tweak the appearance of WordPress admin pages. You can hide elements, move items around, and change fonts, colors, and sizes using custom CSS.
With this plugin, you can define additional CSS either inline or by URL, which will be applied to all administration pages. It provides hooks to customize the output, the CSS files, and control when the CSS is applied.
For developers, detailed documentation is available that covers the hooks provided by the plugin.
Other Notable Features
Here are a few other notable features of this free Add Admin CSS plugin.
Screenshots
FAQ
Yes, via the “Admin CSS Files” input field on the plugin’s settings page.
By default, the CSS is added for every admin page on the site and for every user.
One option, if you wish to only use CSS and you want to limit use of CSS to certain admin pages, is to preface your selectors with admin page specific class(es) on the ‘body’ tag to ensure CSS only applies on certain admin pages. (e.g. body.edit-php h1 { color: purple; }).
Otherwise, programmatically you have full control over that behavior via the 'c2c_add_admin_css_disable_css' filter (see Hooks section). You’d hook that filter, determine the context, and decide if the CSS should be output or not. You could check what page is being loaded and/or who is the current user.
By default, the CSS is added for every admin page on the site and for every user.
Programmatically you have full control over that behavior via the 'c2c_add_admin_css_disable_css' filter (see Hooks section). You’d hook that filter, determine the context, and decide if the CSS should be output or not. You could check who is the current user and/or what page is being loaded.
There is currently no way to do this purely with CSS or through any other setting provided by the plugin.
It is certainly possible that you can put yourself in an unfortunate position by supplying CSS that could hide critical parts of admin pages, making it seemingly impossible to fix or revert your changes. Fortunately, there are a number of approaches you can take to correct the problem.
The recommended approach is to visit the URL for the plugin’s settings page, but appended with a special query parameter to disable the output of its CSS. The plugin’s settings page would typically be at a URL like https://example.com/wp-admin/themes.php?page=add-admin-css%2Fadd-admin-css.php. Append &c2c-no-css=1 to that, so that the URL is https://example.com/wp-admin/themes.php?page=add-admin-css%2Fadd-admin-css.php&c2c-no-css=1 (obviously change example.com with the domain name for your site).
There are other approaches you can use, though they require direct database or server filesystem access:
- Some browsers (such as Firefox, via View -> Page Style -> No Style) allow you to disable styles for sites loaded in that tab. Other browsers may also support such functionality natively or through an extension. Chrome has an extension called Web Developer that adds the functionality.
- If you’re familiar with doing so and have an idea of what CSS style you added that is causing problems, you can use your browser’s developer tools to inspect the page, find the element in question, and disable the offending style.
- In the site’s
wp-config.phpfile, define a constant to disable output of the plugin-defined CSS:define( 'C2C_ADD_ADMIN_CSS_DISABLED', true );. You can then visit the site’s admin. Just remember to remove that line after you’ve fixed the CSS (or at least change “true” to “false”). This is an alternative to the query parameter approach described above, though it persists while the constant remains defined. There will be an admin notice on the plugin’s setting page to alert you to the fact that the constant is defined and effectively disabling the plugin from adding any CSS. - Presuming you know how to directly access the database: within the site’s database, find the row with the option_name field value of
c2c_add_admin_cssand delete that row. The settings you saved for the plugin will be deleted and it will be like you’ve installed the plugin for the first time. - If your server has WP-CLI installed, you can delete the plugin’s setting from the commandline:
wp option delete c2c_add_admin_css
The initial reaction by some might be to remove the plugin from the server’s filesystem. This will certainly disable the plugin and prevent the CSS you configured through it from taking effect, restoring the access and functionality to the backend. However, reinstalling the plugin will put you back into the original predicament because the plugin will use the previously-configured settings, which wouldn’t have changed.
The plugin’s syntax highlighting of CSS (available as of WP 4.9) honors the built-in setting for whether syntax highlighting should be enabled or not.
To disable syntax highlighting, go to your profile page. Next to “Syntax Highlighting”, click the checkbox labeled “Disable syntax highlighting when editing code”. Note that this checkbox disables syntax highlighting throughout the admin interface and not just specifically for the plugin’s settings page.
Yes. The tests are not packaged in the release .zip file or included in plugins.svn.wordpress.org, but can be found in the plugin’s GitHub repository.
Contributors and developers
“Add Admin CSS” is open source software. The following people have contributed to this plugin.
Reviews (35)
Sort by:
Working great !!!
April 8, 2022
|If you get fed up of all the nag screens from themes and plugins nagging you to “Go Pro” etc, then this is a great plugin for adding css to hide them all. Really easy to use.
April 29, 2021
|Awesome plugin, works fantastic Well done!
April 9, 2022
|I really like to customize my admin experience, and installed this plugin to distinguish the icons when other plugin developers default to things like “post icon.” Seems to lack support but that is how it goes with open source plugins. Many thanks when it works 🙂
September 14, 2025
|Awesome plugin, works fantastic Well done!
April 9, 2022
|Working great !!!
April 8, 2022
|I really like to customize my admin experience, and installed this plugin to distinguish the icons when other plugin developers default to things like “post icon.” Seems to lack support but that is how it goes with open source plugins. Many thanks when it works 🙂
September 14, 2025
|Awesome plugin, works fantastic Well done!
April 9, 2022
|Working great !!!
April 8, 2022
|I really like to customize my admin experience, and installed this plugin to distinguish the icons when other plugin developers default to things like “post icon.” Seems to lack support but that is how it goes with open source plugins. Many thanks when it works 🙂
September 14, 2025
|Awesome plugin, works fantastic Well done!
April 9, 2022
|Working great !!!
April 8, 2022
|Contributors & Developers
“Add Admin CSS” has been translated into 3 locales. Thank you to the translators for their contributions.
Translate “Add Admin CSS” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
Escape only the minimum of characters so that valid CSS characters don’t get escaped. Props kevinvanrijn.
Note compatibility through WP 6.9+
Escape only the minimum of characters so that valid CSS characters don’t get escaped. Props kevinvanrijn.
Note compatibility through WP 6.9+
Add c2c_add_admin_css_disable_css filter to override if CSS defined via this plugin should be output or not
Add is_recovery_mode_enabled() to determine is recovery mode is enabled
Only support query parameter method of enabling recovery mode if current user can configure plugin settings
Display the files setting help text as a list rather than a paragraph
Check specifically if recovery mode is enabled before displaying admin notice that recovery mode is enabled
Explicitly state the plugin name in the recovery mode admin notice to avoid ambiguity
Switch use of parse_url() to wp_parse_url()
Escape output of all translated strings
Use instance method invocation instead of a deprecated static method invocation
Convert ‘input_attributes’ value of config items from a string to an array
Add translator comments for a pair of strings with placeholders that didn’t have one
Add DEVELOPER-DOCS.md and move hooks documentation into it
Update plugin framework to 068 068: Change: Discontinue unnecessary explicit loading of textdomain Change: Ignore a PHPCS warning that doesn’t apply Change: Minor code reformatting Change: Note compatibility through WP 6.8+ Change: Update copyright date (2025) Unit tests: Change: Generify unit tests to centralize per-plugin configuration to the top of the test class Change: Define method return types for PHP 8+ compatibility New: Add some header documentation 067: Breaking: Require config attribute ‘input_attributes’ to be an array Hardening: Treat input attributes as array and escape each element before output Change: Ensure config attribute values are of the same datatype as their defaults Change: Simplify form_action_url() to avoid using a server global Change: Use form_action_url() in plugin_action_links() rather than duplicating its functionality Change: Escape output of all translated strings Change: Make get_hook() public rather than protected Change: Explicitly declare object variables rather than doing so dynamically Change: Convert register_filters() to an abstract declaration Change: Use double quotes for attribute of paragraph for setting description Change: Prevent unwarranted PHPCS complaints about nonces Change: Improve function documentation Change: Adjust function documentation formatting to align with WP core Change: Note compatibility through WP 6.5+ Change: Drop compatibility with version of WP older than 5.5 Change: Update copyright date (2024) 066: New: Add customization of capability needed to manage plugin settings (via new filter {plugin_prefix}_manage_options_capability) Change: Add styles for nested lists within settings descriptions Change: Note compatibility through WP 6.3+ 065: New: Add support for ‘inline_help’ setting configuration option New: Add support for ‘raw_help’ setting configuration option New: Add support for use of lists within settings descriptions Change: Add an ‘id’ attribute to settings form Change: Add styles for disabled input text fields and inline setting help notices Change: Support ‘number’ input by assigning ‘small-text’ class Change: Tweak styling for settings page footer Change: Note compatibility through WP 6.2+ Change: Update copyright date (2023) 064: New: For checkbox settings, support a ‘more_help’ config option for defining help text to appear below checkbox and its label Fix: Fix URL for plugin listing donate link Change: Store donation URL as object variable Change: Update strings used for settings page donation link
Discontinue unnecessary explicit loading of textdomain
Ignore a PHPCS warning that doesn’t apply
Minor code reformatting
Note compatibility through WP 6.8+
Update copyright date (2025)
Change: Generify unit tests to centralize per-plugin configuration to the top of the test class Change: Define method return types for PHP 8+ compatibility New: Add some header documentation
Generify unit tests to centralize per-plugin configuration to the top of the test class
Define method return types for PHP 8+ compatibility
Add some header documentation
Require config attribute ‘input_attributes’ to be an array
Treat input attributes as array and escape each element before output
Ensure config attribute values are of the same datatype as their defaults
Simplify form_action_url() to avoid using a server global
Use form_action_url() in plugin_action_links() rather than duplicating its functionality
Escape output of all translated strings
Make get_hook() public rather than protected
Explicitly declare object variables rather than doing so dynamically
Convert register_filters() to an abstract declaration
Use double quotes for attribute of paragraph for setting description
Prevent unwarranted PHPCS complaints about nonces
Improve function documentation
Adjust function documentation formatting to align with WP core
Note compatibility through WP 6.5+
Drop compatibility with version of WP older than 5.5
Update copyright date (2024)
Add customization of capability needed to manage plugin settings (via new filter {plugin_prefix}_manage_options_capability)
Add styles for nested lists within settings descriptions
Note compatibility through WP 6.3+
Add support for ‘inline_help’ setting configuration option
Add support for ‘raw_help’ setting configuration option
Add support for use of lists within settings descriptions
Add an ‘id’ attribute to settings form
Add styles for disabled input text fields and inline setting help notices
Support ‘number’ input by assigning ‘small-text’ class
Tweak styling for settings page footer
Note compatibility through WP 6.2+
Update copyright date (2023)
For checkbox settings, support a ‘more_help’ config option for defining help text to appear below checkbox and its label
Fix URL for plugin listing donate link
Store donation URL as object variable
Update strings used for settings page donation link
Ignore some PHPCS checks that don’t apply
Update and improve long description and numerous FAQ entries
Note compatibility through WP 6.8+
Note compatibility through PHP 8.3+
Drop compatibility with version of WP older than 5.5
Tweak installation instruction
Update copyright date (2025)
Reduce number of tags defined in readme.txt
Remove development and testing related files from release packaging
Add c2c_add_admin_css_disable_css filter to override if CSS defined via this plugin should be output or not
Add is_recovery_mode_enabled() to determine is recovery mode is enabled
Only support query parameter method of enabling recovery mode if current user can configure plugin settings
Display the files setting help text as a list rather than a paragraph
Check specifically if recovery mode is enabled before displaying admin notice that recovery mode is enabled
Explicitly state the plugin name in the recovery mode admin notice to avoid ambiguity
Switch use of parse_url() to wp_parse_url()
Escape output of all translated strings
Use instance method invocation instead of a deprecated static method invocation
Convert ‘input_attributes’ value of config items from a string to an array
Add translator comments for a pair of strings with placeholders that didn’t have one
Add DEVELOPER-DOCS.md and move hooks documentation into it
Update plugin framework to 068 068: Change: Discontinue unnecessary explicit loading of textdomain Change: Ignore a PHPCS warning that doesn’t apply Change: Minor code reformatting Change: Note compatibility through WP 6.8+ Change: Update copyright date (2025) Unit tests: Change: Generify unit tests to centralize per-plugin configuration to the top of the test class Change: Define method return types for PHP 8+ compatibility New: Add some header documentation 067: Breaking: Require config attribute ‘input_attributes’ to be an array Hardening: Treat input attributes as array and escape each element before output Change: Ensure config attribute values are of the same datatype as their defaults Change: Simplify form_action_url() to avoid using a server global Change: Use form_action_url() in plugin_action_links() rather than duplicating its functionality Change: Escape output of all translated strings Change: Make get_hook() public rather than protected Change: Explicitly declare object variables rather than doing so dynamically Change: Convert register_filters() to an abstract declaration Change: Use double quotes for attribute of paragraph for setting description Change: Prevent unwarranted PHPCS complaints about nonces Change: Improve function documentation Change: Adjust function documentation formatting to align with WP core Change: Note compatibility through WP 6.5+ Change: Drop compatibility with version of WP older than 5.5 Change: Update copyright date (2024) 066: New: Add customization of capability needed to manage plugin settings (via new filter {plugin_prefix}_manage_options_capability) Change: Add styles for nested lists within settings descriptions Change: Note compatibility through WP 6.3+ 065: New: Add support for ‘inline_help’ setting configuration option New: Add support for ‘raw_help’ setting configuration option New: Add support for use of lists within settings descriptions Change: Add an ‘id’ attribute to settings form Change: Add styles for disabled input text fields and inline setting help notices Change: Support ‘number’ input by assigning ‘small-text’ class Change: Tweak styling for settings page footer Change: Note compatibility through WP 6.2+ Change: Update copyright date (2023) 064: New: For checkbox settings, support a ‘more_help’ config option for defining help text to appear below checkbox and its label Fix: Fix URL for plugin listing donate link Change: Store donation URL as object variable Change: Update strings used for settings page donation link
Discontinue unnecessary explicit loading of textdomain
Ignore a PHPCS warning that doesn’t apply
Minor code reformatting
Note compatibility through WP 6.8+
Update copyright date (2025)
Change: Generify unit tests to centralize per-plugin configuration to the top of the test class Change: Define method return types for PHP 8+ compatibility New: Add some header documentation
Generify unit tests to centralize per-plugin configuration to the top of the test class
Define method return types for PHP 8+ compatibility
Add some header documentation
Require config attribute ‘input_attributes’ to be an array
Treat input attributes as array and escape each element before output
Ensure config attribute values are of the same datatype as their defaults
Simplify form_action_url() to avoid using a server global
Use form_action_url() in plugin_action_links() rather than duplicating its functionality
Escape output of all translated strings
Make get_hook() public rather than protected
Explicitly declare object variables rather than doing so dynamically
Convert register_filters() to an abstract declaration
Use double quotes for attribute of paragraph for setting description
Prevent unwarranted PHPCS complaints about nonces
Improve function documentation
Adjust function documentation formatting to align with WP core
Note compatibility through WP 6.5+
Drop compatibility with version of WP older than 5.5
Update copyright date (2024)
Add customization of capability needed to manage plugin settings (via new filter {plugin_prefix}_manage_options_capability)
Add styles for nested lists within settings descriptions
Note compatibility through WP 6.3+
Add support for ‘inline_help’ setting configuration option
Add support for ‘raw_help’ setting configuration option
Add support for use of lists within settings descriptions
Add an ‘id’ attribute to settings form
Add styles for disabled input text fields and inline setting help notices
Support ‘number’ input by assigning ‘small-text’ class
Tweak styling for settings page footer
Note compatibility through WP 6.2+
Update copyright date (2023)
For checkbox settings, support a ‘more_help’ config option for defining help text to appear below checkbox and its label
Fix URL for plugin listing donate link
Store donation URL as object variable
Update strings used for settings page donation link
Ignore some PHPCS checks that don’t apply
Update and improve long description and numerous FAQ entries
Note compatibility through WP 6.8+
Note compatibility through PHP 8.3+
Drop compatibility with version of WP older than 5.5
Tweak installation instruction
Update copyright date (2025)
Reduce number of tags defined in readme.txt
Remove development and testing related files from release packaging
Update plugin framework to 063 Fix: Simplify settings initialization to prevent conflicts with other plugins Change: Remove ability to detect plugin settings page before current screen is set, as it is no longer needed Change: Enqueue thickbox during 'admin_enqueue_scripts' action instead of during 'init' Change: Use is_plugin_admin_page() in help_tabs() instead of reproducing its functionality Change: Trigger a debugging warning if is_plugin_admin_page() is used before 'admin_init' action is fired
Simplify settings initialization to prevent conflicts with other plugins
Remove ability to detect plugin settings page before current screen is set, as it is no longer needed
Enqueue thickbox during 'admin_enqueue_scripts' action instead of during 'init'
Use is_plugin_admin_page() in help_tabs() instead of reproducing its functionality
Trigger a debugging warning if is_plugin_admin_page() is used before 'admin_init' action is fired
Add new string (from plugin framework) for translation
Update plugin framework to 063 Fix: Simplify settings initialization to prevent conflicts with other plugins Change: Remove ability to detect plugin settings page before current screen is set, as it is no longer needed Change: Enqueue thickbox during 'admin_enqueue_scripts' action instead of during 'init' Change: Use is_plugin_admin_page() in help_tabs() instead of reproducing its functionality Change: Trigger a debugging warning if is_plugin_admin_page() is used before 'admin_init' action is fired
Simplify settings initialization to prevent conflicts with other plugins
Remove ability to detect plugin settings page before current screen is set, as it is no longer needed
Enqueue thickbox during 'admin_enqueue_scripts' action instead of during 'init'
Use is_plugin_admin_page() in help_tabs() instead of reproducing its functionality
Trigger a debugging warning if is_plugin_admin_page() is used before 'admin_init' action is fired
Add new string (from plugin framework) for translation
Upcoming Soon
WPS
6.99
Average
Ratings
4.9 out of 5 | 35Version
2.5.1Last updated
4 months agoActive installations
10,000+WordPress version
6.9.4 or higherPHP version
or higherLanguages
4Tags
Admin,Admin Theme,Css,Style,StylesheetsOther plugins you might like
Elementor Website Builder – More Than Just a Page Builder
By Elementor
WPS
7.7
Very Good
7.2k+reviews
active installation
Tested with
6.9.4ElementsKit Elementor Addons and Templates
By Roxnor
WPS
7.41
Very Good
2k+reviews
active installation
Tested with
7.0Starter Templates – AI-Powered Templates for Elementor & Gutenberg
By Brainstorm Force
WPS
7.41
Very Good
4.7k+reviews
active installation
Tested with
6.9.4Essential Addons for Elementor – Popular Elementor Templates & Widgets
By WPDeveloper
WPS
7.29
Very Good
4.1k+reviews
active installation
Tested with
7.0Ultimate Addons for Elementor
By Brainstorm Force
WPS
7.19
Very Good
2.5k+reviews
active installation
Tested with
7.0Spectra Gutenberg Blocks – Website Builder for the Block Editor
By Brainstorm Force
WPS
7.37
Very Good
1.8k+reviews
active installation
Tested with
6.9.4