I got a call from a client running a big content operation, and their editorial workflow was a mess. Writers drafted in Google Docs, editors left feedback in Asana, and the project manager tried to hold it together in Slack. Feedback kept getting lost and the wrong versions kept going live. What they really wanted was to keep all that conversation inside WordPress, right where the content lives. The new Notes feature in WordPress 6.9 is more or less built for that.
My first thought was, “Okay, which third-party commenting plugin are we going to use?” That’s usually a trap. It means another dependency, another potential security hole, and you end up at the mercy of the plugin developer. Then I read the dev notes for the latest WordPress release, and there it was. They built the solution right into core.
How the WordPress Notes feature actually works
Here’s the interesting part: under the hood, a “Note” is just a WP_Comment with a comment type of note. That’s it. All the mature, stable code for handling comments is already there, so we can query for notes the same way we query regular comments. Reusing an existing API beats bolting on something new.
<?php
// This is all you need to get all unresolved notes for a post
$notes = get_comments(
array(
'post_id' => $post_id,
'type' => 'note',
'status' => 'hold' // 'hold' means unresolved
)
);
The first thing my client asked was if we could get it working on their “Webinar” custom post type. Piece of cake. Since we controlled the CPT registration, we just had to tell it to support editor notes.
<?php
register_post_type( 'bbioon_webinar', array(
'label' => 'Webinars',
'public' => true,
'show_in_rest' => true,
'supports' => array(
'title',
'editor' => array( 'notes' => true ), // Right here, man.
'author',
),
) );
If you’re dealing with a CPT from a third-party plugin, you have to use add_post_type_support() instead, which is a bit more verbose for now. The official dev note on the feature, which I found on make.wordpress.org, goes into the nuances there. Worth a read if that’s your situation.
So, what’s the catch?
It’s not perfect yet. This is version one, and there are a few things to know before you roll it out to your team:
- Notification spam: The post author gets an email for every single note. On a busy post, that fills up an inbox fast. I’m hoping for digest emails in a future release.
- Block-level only: You can only attach a note to a whole block, like an entire paragraph. You can’t highlight a single sentence. That’s supposedly coming in WordPress 7.0.
- Duplication issues: If you duplicate a block that has a note, both copies point to the same note, which gets confusing fast. It’s a known Gutenberg limitation they’re working on.
Even with those limitations, it’s a real step forward. It brings a big part of the editorial workflow into the editor itself, where it belongs.
This stuff gets complicated fast. If you’re tired of debugging someone else’s mess and just want your site to work, drop my team a line. We’ve probably seen it before.