Customize: Introduce custom CSS for extending theme styles.

* Custom CSS is associated with a given theme and is displayed in an inline `style` element at the `wp_head` hook after the `wp_print_styles` is called so that it overrides any enqueued stylesheets.
* A `wp_get_custom_css()` function is used for accessing the CSS associated with the current theme (or another theme) and a `wp_get_custom_css` filter for manipulating it.
* CSS is managed in customizer via a new "Additional CSS" section with a single `textarea` control. 
* `WP_Customize_Section::$description_hidden` is introduced for hiding extended descriptions in customizer sections behind a help toggle as done with panels.
* CSS is stored in a `custom_css` post type with the theme (stylesheet) slug as the `post_name`.
* `WP_Customize_Custom_CSS_Setting` is introduced to handle validation of CSS, previewing, and persisting the CSS to the `custom_css` post type.
* The `custom_css` setting is tied to a new `unfiltered_css` capability which maps to `unfiltered_html` by default.
* Escaping the message in the notification template is removed to allow markup (`code` tags) to be rendered.

See https://make.wordpress.org/core/2016/10/11/feature-proposal-better-theme-customizations-via-custom-css-with-live-previews/

Props johnregan3, celloexpressions, folletto, westonruter.
Fixes #35395.

Built from https://develop.svn.wordpress.org/trunk@38829


git-svn-id: http://core.svn.wordpress.org/trunk@38772 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Weston Ruter
2016-10-19 18:15:31 +00:00
parent ec5782bed5
commit 1ccd9e7a6c
16 changed files with 692 additions and 19 deletions

View File

@@ -904,7 +904,7 @@
* @since 4.1.0
*/
attachEvents: function () {
var section = this;
var meta, content, section = this;
// Expand/Collapse accordion sections on click.
section.container.find( '.accordion-section-title, .customize-section-back' ).on( 'click keydown', function( event ) {
@@ -919,6 +919,21 @@
section.expand();
}
});
// This is very similar to what is found for api.Panel.attachEvents().
section.container.find( '.customize-section-title .customize-help-toggle' ).on( 'click', function() {
meta = section.container.find( '.section-meta' );
if ( meta.hasClass( 'cannot-expand' ) ) {
return;
}
content = meta.find( '.customize-section-description:first' );
content.toggleClass( 'open' );
content.slideToggle();
content.attr( 'aria-expanded', function ( i, attr ) {
return attr === 'true' ? 'false' : 'true';
});
});
},
/**

File diff suppressed because one or more lines are too long