WordPress.org

Make WordPress Core

Opened 8 months ago

Last modified 2 months ago

#38049 new enhancement

Rename Headings in TinyMCE

Reported by: mrwweb Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version:
Component: Editor Keywords: has-patch
Focuses: ui, accessibility Cc:

Description

Forking a proposal from #27159 where Heading 1 will be removed from TinyMCE in WordPress 4.7:

Multiple people have suggested renaming the Headings in the editor to encourage correct usage (that is the goal of this ticket). I would add that this might be combined with actually removing Headings 5 and 6 which I imagine are barely [properly] ever used. (Theme and plugin authors will always be able to add Headings back via filters.) Only having to name three levels of headings also makes this much more feasible.

A few ideas just to get things started.

Concept 1

  • Heading (H2)
  • Subheading (H3)
  • Subsubheading (H4)

Concept 2

  • Section Title (H2)
  • Subsection Title (H3)
  • Subsubsection Title (H4)

Concept 3 (use indentation to imply hierarchy)

  • Heading 2
  • – Heading 3
  • –– Heading 4

At least at first, I think it would make sense to retain the HTML heading level in parentheses as shown above to help technical editors understand what's going on.

To encourage correct heading usage, the new labels must communicate to all editors that the heading levels are hierarchical and not selected based on perceived importance or (obviously) visual appearance.

One primary problem is "what comes after sub? subsub?" Most rich text editors editors I've looked at while writing this ticket either using "Heading #" OR give only two levels of Heading (which avoids the "subsubsub" problems).

References

cc: @hugobaeta

Attachments (1)

38049.patch (1.5 KB) - added by azaozz 6 months ago.

Download all attachments as: .zip

Change History (33)

This ticket was mentioned in Slack in #core-editor by mrwweb. View the logs.


8 months ago

This ticket was mentioned in Slack in #design by hugobaeta. View the logs.


7 months ago

#3 follow-up: @hugobaeta
6 months ago

Another solution might be to use explicit levels indicators:

  • Heading Level 1 (this would generate an h2)
  • Heading Level 2 (this would generate an h3)
  • Heading Level 3 (this would generate an h4)

Some examples for perspective:

GoogleDocs
https://cldup.com/UK-ZwvJhha.png

Pages
https://cldup.com/xtGR1M5UrT.png

#4 follow-up: @hugobaeta
6 months ago

In a conversation with @azaozz I ended up realizing this idea that what is important here is to convey hierarchy to the user, not imply what code is used. So I'm actually very much ok with using just "Heading 1" to represent what will be an h2, because this is a visual editor, not a code editor.

To that note, I suggest we go with this:

  • Heading 1 (this would generate an h2)
  • Heading 2 (this would generate an h3)
  • Heading 3 (this would generate an h4)

I know this ticket also addresses removing the other levels for h5 and h6, which I have to agree with. The argument here is the vast majority of users are probably using this not to denote hierarchy, but simply to have smaller text sizes, which would be a non-semantic usage of headings. I don't have stats for this, maybe someone from Automattic can grab stats from the Calypso editor on this. Either way, if this ends up being a reason for strong disagreements, I'd ignore it for now and eventually move that to another ticket.

@azaozz I'll leave it to you, but I think at lease using this naming convention for 4.7 beta would be great. Can I get some other designers to also sign off on this? @karmatosed @melchoyce ?

#5 in reply to: ↑ 4 @azaozz
6 months ago

  • Milestone changed from Awaiting Review to 4.7

Replying to hugobaeta:

Yeah, exactly. Most users have never heard what h1 and h2 are, and are not concerned with what HTML is used in the background. They just want to be able to format their posts and (preferably) have familiar UI for that.

Thinking we should improve this drop-down after removing the h1, shouldn't leave it as it is at the moment for 4.7. Moving it to that milestone for review.

@azaozz
6 months ago

#6 @azaozz
6 months ago

  • Focuses ui added
  • Keywords has-patch added

38049.patch implements the above:

  • Use "Heading 1" for inserting h2, "Heading 2" for h3 and "Heading 3" for h4.
  • Remove h5 and h6.

#7 @afercia
6 months ago

  • Focuses accessibility added

I'm not sure the mismatch between the visible number and the actual heading level is so ideal. Thinking this has the potential to mislead users.
Also the mismatch between the Heading # and the shortcut hint is a bit confusing:

https://cldup.com/7q7qCewZRv.png

Instead, I like the proposal with the indentation because it visually represents the concept of hierarchy and would help educating users that headings should be used semantically.

#8 @ahortin
6 months ago

  • Focuses accessibility removed

Please don't do this. Any of it. Please.

The removal of the Heading 1 will be a HUGE pain for anyone using a page builder plugin. When using a Page Builder, most of them don't automatically output the actual page title. They'll simply start off with a blank page (by default). This means you typically need to manually enter the page title and style it as a H1. Removing the 'Heading 1' option is obviously going to make this extremely difficult.

As much as most people here wont like page builders, there are HUGE communities (Beaver Builder, Divi, Visual Composer, etc.) of people using them and you're going to make life very difficult for them by removing this 'Heading 1' option.

Likewise, I think the idea to change what HTML tags are generated for each Heading is a really, really bad idea. Anyone who's been using WordPress for even a short amount of time, knows that when you use a 'Heading 2', it generates an h2, as an example. Changing this so that an 'Heading 2' now generates an h3 is ridiculously confusing. You don't need to be a developer to know what an h1 or h2 heading is used for. Anyone who knows anything about SEO knows about h1's h2's etc.. Having an 'Heading 2' generate an h3 is just so confusing. At the moment you don't have to think about it, when you select a 'Heading 2', for example. You automatically know that a 'Heading 2' will generate an h2. How is changing this making things easier for the end user? It's certainly not making it any more semantic.

Likewise, changing the names of these titles would be equally confusing. There's no standard naming conventions for anything like Heading (H2), Subheading (H3), Subsubheading (H4) or below. The nearest convention we have is what is specified in the html spec, which is the word 'heading', hence why 'Heading 1', 'Heading 2', 'Heading 3' etc. makes sense.

Again, anyone who has even a mild interest in SEO isn't going to know or understand what a 'Subsubheading' is. Every SEO article out there is going to refer to your page titles as 'Heading 1', 'Heading 2' etc. When Google talks about "Dos & Dont's" for good page SEO, they're not going to use the terms 'Subheading' and 'Subsubheading', they'll use 'Header 2' (or 'h2') and 'Header 3' (or 'h3'). You're not make things easier by changing this convention, you're doing the exact opposite.

I also think it's a huge mistake to remove 'Heading 5' & 'Heading 6'. I agree that these headings aren't used anywhere near as often as the others, but it's not up to you to say that people shouldn't be using them. The fact the they could be added back in using a filter is irrelevant. Why should we have to add another plugin or add a new filter just to get back functionality that should be there in the first place. How does removing these two Headings make WordPress any easier to use? It doesn't, simple as that.

I'm all for simplifying things in the dashboard, but things shouldn't be removed or even renamed at the expense of making things more difficult for end users.

Last edited 6 months ago by ahortin (previous) (diff)

#9 @afercia
6 months ago

  • Focuses accessibility added

Please don't remove the accessibility focus tag since it is used to generate Trac reports and helps us to properly handle tickets.

#10 @ahortin
6 months ago

@afercia Apologies for that. It wasn't done on purpose. I must've accidentally clicked on the tag. Sorry about that.

#11 @ramiy
6 months ago

Not sure I agree with the change. And I definitely disagree with the statement that "most users have never heard what h1 and h2 are".

First of all, everybody knows what's the difference between H1-H6, it's a common-sense. Titles are used in word processor for a long time. WordPress didn't invented this.

Second of all, the naming changes are not consistent with all the themes. Each theme has it's own title structure. Forcing this change will confuse many users.

And finally, as mentioned above, mismatch between the visible number and the actual heading level is misleading.

I see more disadvantages than advantages in this proposal.

#12 @rianrietveld
6 months ago

My 2 cents:

  • About the removal of the H1: We had this discussion before in the Genesis Community. A lot of developers use a Page Builder, as @ahortin mentioned, and removing the H1 removes it from the pages all together, which seems not a good idea.
  • Naming the levels of headings different from the actual level in the HTML seems wrong and confusing to me.
  • I like the dashes before the levels to show the structure.
  • Adding subsub etc is ugly and I wonder how well that is translatable.
  • I like the removal of the H5 and H6 to simplify the dropdown, but that's personal and not accessibility related

Maybe instead of H1 say: main heading, and the rest as they are with dashes?
Like:

 Main heading
 - Heading 2
 -- Heading 3
 --- Heading 4
Last edited 6 months ago by rianrietveld (previous) (diff)

This ticket was mentioned in Slack in #accessibility by rianrietveld. View the logs.


6 months ago

#14 follow-up: @iseulde
6 months ago

Like I said a few weeks ago in a #design meeting, I think its better to change the label of "Heading 1" so it discourages usage in the post content. I think the suggestion at the time was "Heading 1 (Title)" or something similar. I like @rianrietveld's suggestion "Main Heading" as well. Mentioning "Title" might connect it better to the post title field though. Maybe "Main Heading (Title)"?

#15 in reply to: ↑ 14 @rianrietveld
6 months ago

Replying to iseulde:

Mentioning "Title" might connect it better to the post title field though. Maybe "Main Heading (Title)"?

Or just plain Title? Like Google Docs does?

This ticket was mentioned in Slack in #core by stevenkword. View the logs.


6 months ago

#17 @stevenkword
6 months ago

  • Milestone changed from 4.7 to Future Release

Punting from 4.7 for needed UX work, further discussion, and testing.

#18 in reply to: ↑ 3 @mrwweb
6 months ago

Replying to hugobaeta:

Another solution might be to use explicit levels indicators:

  • Heading Level 1 (this would generate an h2)
  • Heading Level 2 (this would generate an h3)
  • Heading Level 3 (this would generate an h4)

That is super confusing and I can't think of any other place in WordPress where the interface is essentially lying about what it's doing. I have personally spent hours drilling into people not to use Heading 1 and I personally know a lot of other who have done the same. This would cause problems and people wouldn't even know it.

Regarding page builders, in previous tickets it's been mentioned that it's quite easy to add H1 back into formatselect via the tiny_mce_before_init filter settings. I know some page builders (Make theme) insert the title as H1 with screen reader text if users choose to hide it, which seems like a smart decision. Even with page builders, my guess is still that a large majority of themes either output Heading 1 for the Page Title or should be doing that and are doing something weird instead.

Finally, I want to remind people the point of changing this:

To encourage correct heading usage, the new labels must communicate to all editors that the heading levels are hierarchical and not selected based on perceived importance or (obviously) visual appearance.

Any interface that relies only on how headings look will do more harm than good. I have spent hours watching people screw up the use of headings and that is the primary mistake they make. (I've written up a list of common heading mistakes I see users make.)

So with all that said, I think we should either do:

Heading 2
– Heading 3
–– Heading 4

OR

Page Title
– Heading 2
–– Heading 3
––– Heading 4

This may not be as pretty as renaming them but it is technically descriptive and shows hierarchy. Given that, I have a hard time imagining a solution that meets the goal better than that.

This ticket was mentioned in Slack in #core-editor by azaozz. View the logs.


6 months ago

#20 follow-up: @azaozz
6 months ago

  • Milestone changed from Future Release to 4.7
  • Type changed from enhancement to task (blessed)

Discussed this again at today's editor chat. If not renaming the remaining headers (as suggested in comment 4), the best thing is to bring h1 back and rename it.

That will pretty much stop the users from using it to just set font size, so the goal from #27159 will be met. It also covers the few legitimate user cases mentioned above.

Thinking it should be renamed to "Title" as in the examples above. This is the clearest label that describes what h1 should be used for the best.

Also thinking this should be fixed in 4.7, starting with Heading 2 is pretty confusing.

Last edited 6 months ago by azaozz (previous) (diff)

This ticket was mentioned in Slack in #design by iseulde. View the logs.


6 months ago

#22 in reply to: ↑ 20 @mrwweb
6 months ago

Replying to azaozz:

Thinking it should be renamed to "Title" as in the examples above. This is the clearest label that describes what h1 should be used for the best.

Also thinking this should be fixed in 4.7, starting with Heading 2 is pretty confusing.

Both good points.

Hopefully you'll include the indentation too! Having looked at @hugobaeta screenshots above and a bit more thinking, I actually think not having a dash before H2 makes the most sense since it's also "top-level" in many senses:

Title
Heading 2
– Heading 3
–– Heading 4

Those are en-dashes by the way. Having experimented with most dashes, I think those are the nicest looking.

That also keeps things shorter and less dashy. I don't know if that will cause any problem with RTL languages.

#23 @azaozz
6 months ago

In 38970:

TinyMCE: after chats in #core-editor and #desing on Slack, the decision is to not remove Heading 1 for beta1.

See #38049.

This ticket was mentioned in Slack in #core by jeffpaul. View the logs.


6 months ago

This ticket was mentioned in Slack in #design by hugobaeta. View the logs.


6 months ago

This ticket was mentioned in Slack in #core-editor by mrwweb. View the logs.


6 months ago

This ticket was mentioned in Slack in #accessibility by afercia. View the logs.


6 months ago

#28 follow-up: @afercia
6 months ago

Should this ticket be moved out from the 4.7 milestone?

#29 in reply to: ↑ 28 @mrwweb
6 months ago

Replying to afercia:

Should this ticket be moved out from the 4.7 milestone?

I believe so, but I sure hope we continue discussion on this in 4.8.

#30 @helen
6 months ago

  • Milestone changed from 4.7 to Awaiting Review
  • Type changed from task (blessed) to enhancement

This ticket was mentioned in Slack in #core-editor by mrwweb. View the logs.


5 months ago

This ticket was mentioned in Slack in #core-editor by hugobaeta. View the logs.


2 months ago

Note: See TracTickets for help on using tickets.