[wp-trac] [WordPress Trac] #35395: Provide a better gateway for code-based theme customizations with the Customizer

WordPress Trac noreply at wordpress.org
Mon Jan 11 04:34:52 UTC 2016


#35395: Provide a better gateway for code-based theme customizations with the
Customizer
------------------------------+-----------------------
 Reporter:  celloexpressions  |      Owner:
     Type:  feature request   |     Status:  new
 Priority:  normal            |  Milestone:  4.5
Component:  Customize         |    Version:
 Severity:  normal            |   Keywords:  has-patch
  Focuses:                    |
------------------------------+-----------------------
 The Theme Editor represents an important part of WordPress' mission to
 democratizing publishing, acting as a gateway for introducing users to
 their ability to create literally anything with WordPress by editing and
 writing code. Many developers of all abilities (including myself) got
 their start with PHP or other related technologies by editing themes with
 the theme editor in the WordPress admin.

 At this point in the development of the WordPress ecosystem, we can do a
 much better job of introducing users to code-based customization for their
 sites. This ticket proposes leveraging the Customizer to offer instant
 live previews of code-based changes for improved user experience. Rather
 than blindly making edits that can completely take down a site where the
 user potentially has no idea what FTP even is, every change is instantly
 previewed and no changes are published until the user is ready to push
 them live.

 ------

 == Proposed solution: Custom CSS + Links to resources outside of core ==

 WordPress can't reasonably teach users much about code within the software
 (although a plugin that does so would be very interesting to see).
 Additionally, when bridging the gap between advanced user and beginning
 developer, desired changes are likely to be limited to visual tweaks that
 are primarily theme-related. Therefore, I'm proposing to limit the scope
 of this new feature to a custom CSS editor.

 The CSS editor would take inspiration from the many plugins (including
 Jetpack) offering similar solutions, but with an updated solution that
 offers instant previewing in the Customizer via `postMessage` setting
 transport. This is core territory rather than plugin territory because it
 is designed as the next generation of the existing theme editor in core,
 with a more refined feature set and more user-oriented focus. The theme
 editor is not proposed to be removed at this time, although that could be
 a future possibility depending on a variety of factors. Plugins could
 continue expanding this feature to incorporate additional uses.

 Storing the CSS as a `theme_mod` facilitates custom CSS being theme-
 specific. However, the editor would be used to override theme styles
 rather than editing them directly to avoid the awkward experience of
 telling users that they can make changes but they may get overwritten
 during updates, which the theme editor does. Instead, custom CSS safely
 stays available on a per-theme basis after updating and switching themes.
 Other solutions such as a custom post type make the notion of having
 different sets of CSS styles for different themes difficult to implement.
 Projects such as Customizer Transactions (#30937, which would actually use
 post objects) and revisions for Customizer settings (#31089) would bring
 benefits offered by the custom post type approach to this feature, while
 storing the data in a more logical theme-related way.

 To improve the user experience further, it is critical that a link to
 documentation and resources for learning CSS be included with useful help
 text inline alongside the CSS editor. This could initially be a codex page
 but would ideally live on a user or developer handbook of some sort
 eventually. Inline text must be much more succinct than the help tab on
 the existing theme editor, conveying what CSS is, where to learn about
 specific rules, and explaining that it's specific to each theme in only a
 few lines. My initial proposal is in the screenshots below.

 Considering next steps when users begin moving beyond the basics of what
 can be done within a custom CSS editor like this, I also suggest providing
 an additional piece of help text underneath the editor (potentially only
 once a certain threshold of content is reached - the exact measure could
 be rough). Such a friendly tip could convey that if they're making a lot
 of progress with CSS, they should consider learning more about themes,
 child themes, storing CSS in files, etc. via an external link to a
 resource on WordPress.org. On multisite installations we would likely
 never show this message since the user probably can't make code changes
 there outside of this CSS editor. As with any customizer feature, custom
 CSS could be disabled with `remove_section()` on sites where
 administrative access is to be limited.

 Technical Considerations with the initial patch:
 - Should we sanitize & validate user-input CSS? I believe the current
 theme editor doesn't do anything, and worst case scenario we could set up
 similar capability restrictions.
 - Should we include syntax highlighting? There are libraries available, if
 we want it it would require a compatible license or we could also roll our
 own. May be a future enhancement for later.
 - The patch leverages the existing textarea control for simplicity, as
 well as introducing a new core control type for help text. If we want to
 add syntax highlighting or other usability improvements such as vertical
 auto-resizing for the editor to avoid double scrollbars (since this is the
 only option in the section), we can do a custom control instead.
 - While we could bump the editor out of the standard Customizer sidebar to
 provide more horizontal space, the short line lengths typical in CSS lend
 themselves nicely to the amount of space provided by default.
 - I included help links within the translatable string as they would need
 to be localized; we may need to break these out separately though?
 - We should probably create a new page introducing CSS for the first link
 - nothing on the codex or handbook currently fits this purpose. There's a
 decent explanation on WordPress.com that could potentially be adapted and
 expanded in the theme developer handbook:
 .https://en.support.wordpress.com/custom-design/css-basics/
 - Live preview is not working when previewing a theme, I'm not sure why.
 It does work if the theme previously had custom CSS in it.

--
Ticket URL: <https://core.trac.wordpress.org/ticket/35395>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list