The WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. development team builds WordPress! Follow this site for general updates, status reports, and the occasional code debate. There’s lots of ways to contribute:
Found a bugbugA bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority.?Create a ticket in the bug tracker.
An update on the Presence APIfeature pluginFeature PluginA plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins, announced in April. Here’s everything that’s shipped since then.
Current version: 0.14.0. Requires WordPress 7.0 and PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher 7.4.
Post locks live in the presence table, so refreshing one no longer bumps the posts cache key.
Every avatarAvatarAn avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. now requests the right resolution for retina screens (#481).
The “someone else updated this” banner shows up again correctly if you dismiss it and someone edits again (#371).
Keyboard users can reach every item in the adminadmin(and super admin) bar menu, and focus stays put when the dashboard widgets refresh (#271, #275, #390).
One tab now polls and shares results with the rest, background tabs stop sending presence, and idle screens back off automatically (#300, #307, #675).
The Editors column and the Online users list refresh on each heartbeat (#604, #606).
Site Health tells you when Heartbeat can’t keep presence current (#544).
Recording and privacy
Recording is on by default. Switch it off for one site on Settings > General, or for every site at once on Networknetwork(versus site, blog) Admin > Settings. If either switch is off, recording is off, and post locks keep working either way (#429, #442). A privacy policy section, exporter and eraser cover presence data too (#449).
Each site has its own switch.The network switch overrides every site’s own setting when it’s off.
From WP-CLIWP-CLIWP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/https://make.wordpress.org/cli/, run wp presence recording set off, or add --network for the whole network.
MultisitemultisiteUsed to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site
Network Admin now shows who’s online across every site, with matching REST and WP-CLI. It’s on by default for networks below wp_is_large_network(), and the wp_presence_network_aggregation_enabledfilterFilterFilters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. turns it on or off (#332, #365).
Each site writes a summary row, so Network Admin reads one table instead of every site’s.
Post locks
Post locks now live in the presence table instead of post metaMetaMeta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress., so refreshing a lock no longer invalidates every cached post query on sites with a persistent object cache (#551). Locks keep working with recording switched off (#644).
Every post type
Presence works on every post type with an editor, including what the Site Editor has open (#631, #638). Roles that can edit only pages or a custom post typeCustom Post TypeWordPress can hold and display many different types of content. A single item of such a content is generally called a post, although post is also a specific post type. Custom Post Types gives your site the ability to have templated posts, to simplify the concept. get presence too (#637).
Who sees what
Everyone online still appears in the admin bar, but where they are is now behind the view_presence_locationcapabilitycapabilityA capability is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on their role. For example, users who have the Author role usually have permission to edit their own posts (the “edit_posts” capability), but not permission to edit other users’ posts (the “edit_others_posts” capability)., which maps to list_users by default (#571). Everyone can always see their own. The admin bar shows whole faces beside My Account (#565, #574). A face is ringed in the person’s blockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor color only when you’re both in the same post, the way the editor shows it, and in your admin color scheme everywhere else (#707).
With it, administrators see where each person is.Without it, editors see who is online but not where.
AI agents
An AI agent editing over REST or MCP sends no Heartbeat, so it wouldn’t show up on its own. As of 0.13.0, each save writes a presence row for it in that post’s room, and the row expires about 75 seconds after its last save by default. The row appears in the admin bar and the Editors column with an Agent badge (#653, #697, #701).
The pluginPluginA plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. doesn’t decide who is an agent. It asks the Agent Users plugin through wpai_is_agent_user() when that’s loaded, and any plugin can answer through the wp_presence_is_agent_user filter. With neither, nobody is labeled.
Performance
In 0.12.2, each presence query is read once per request until the table changes, which took a Users screen heartbeat from 6 presence reads to 2 (#678). The plugin also stopped checking its tables on every admin page (#657, #682), and only one visible tab per site sends the Heartbeat pingPingThe act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” (#675).
For developers
As of 0.14.0, REST presence entries no longer include color, and wp_presence_get_user_color() returns the block editor’s color for a user ID instead of a stored one (#707).
New functions: wp_presence_exchange(), wp_presence_leave() and wp_presence_is_available(), documented in the PHP API section of the README (#546, #519).
Each row carries its own expiry, and reads filter by client ID prefix in SQL (#541, #530).
An admin bar debugger replaces the Dashboard widgetWidgetA WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user., and plugins can add their own rows to it (#652, #666). It’s a development tool: it loads only with WP_DEBUG on and isn’t in the WordPress.orgWordPress.orgThe community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ download, so use a git checkout or the plugin’s Live Preview in Playground.
Gutenberg Sync Engines, a plugin for trying server-aware real-time collaboration, keeps who’s in the editor in the presence table when Presence APIAPIAn API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. is active too. To see it, launch the RTC Playground, which opens a post shared with two seeded collaborators, and open the debugger: their rows start with gse-.
101 people online, each row showing its client ID and seconds since last seen.
You must be logged in to post a comment.