Make WordPress Core

Opened 5 years ago

Last modified 4 years ago

#37974 closed enhancement

Add multi-panel feature to pages through add_theme_support — at Version 2

Reported by: karmatosed Owned by:
Milestone: Priority: normal
Severity: normal Version:
Component: Themes Keywords: has-ux-feedback needs-patch
Focuses: ui Cc:

Description (last modified by celloexpressions)

Making a multi-panel page and giving users the ability to chose what content is in those sections this is something people really want. There are a lot of methods to do this, from plugins to within themes. As a result, there's a lot of confusion for users.

At Automattic, we've now done this in several themes through a 'Theme Options' section. In this ticket, I am suggesting a way that this comes back to core.

Before I dive into this suggestion, I will say that I think there are absolutely other ways. In the long run I would also love to see content blocks make this feature obselete. But, this option is user tested. This is the best, proven method for users to get this. It also should be a lot less difficult and more time efficient to achieve. I'd love to see this be part of this release.

How would this happen? Lets look at a flow suggestion.


  1. There is a new section under the Customizer called 'Multi Panel' - we totally should come up with a better name.
  2. You can click in and see each panel here.
  3. You then from those panels can click in and add content to the panels.

Stepping through that this in code would appear something like this:

  1. add_theme_support(multipanel-page, 4);

// 4 being number of panels and unlimited being the default.

For simplicity I am just suggesting it's a simple add_theme_support. We have past precedence for this. Then you'd get the new section in Customizer appear. I also suggest this gets made as a feature plugin porting pretty much all of the existing code. At least this makes sense as a first step.

Template wise, we probably want a consistent naming for this or to have people able to declare a template page. It could then have that page used as a static page, or just be used. You could either use one wrapping content for all or call each panel (if set numbers) and style each differently. This opens up to some flexibility with layout.

This type of multi-panel page can be seen already live in themes like Pique: https://en-gb.wordpress.org/themes/pique/. There's good evidence from user testing that currently this is the best option too.

Change History (2)

#1 @karmatosed
5 years ago

  • Description modified (diff)

#2 @celloexpressions
5 years ago

  • Description modified (diff)
  • Type changed from defect (bug) to feature request

(note: ticket description modified to put backticks around the //, which was preventing comments from being added to the ticket, apparently)

I like the concept of a better core solution for multi-part pages. But I'm a little unclear on how this proposal would work in terms of content structure. Is "Panel Content" a post object, of a particular post type? What would the API look like for themes displaying the information? What would the UI look like for filling in the actual content here?

I wonder whether we might be able to accomplish something similar with a more straightforward UI if it were based on widgets, and new core widgets that supported this type of functionality were introduced. That way we'd be able to leverage the existing core UI for adding/reordering/number of items/etc, and on a technical level things like selective refresh and the work on storing widgets as post objects. This idea is generally related to widgets as "content blocks".

Looking at https://piquedemo.wordpress.com/, being able to make a "container widget" that sets a number of columns, title, and maybe image, and then lets users add content via additional widget that, for example, have fields for image, title, and description, could be worth exploring. Or that part could be based on theme support with content being organized with widgets. I'm definitely concerned about how this will work across theme switches, though, especially for themes that don't support this.

Note: See TracTickets for help on using tickets.