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.
Below you find a table that lists all coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. blocks available in the inserter marks in the grid the feature they support in the 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. Itโs a basic lookup table that helps developers to find the information quickly.
While this post is released as part of 6.7, the content summarizes changes between 6.1 and 6.7. This is an updated of the 6.6 edition and provides a cumulative list of design supports added with the last six WordPress releases. The icon โ๏ธ indicates new in 6.7.
Besides adding Border Controls to a long array of blocks, In version 6.7 writingMode was added to Site title, Site tagline, verse blocks and the button element. As thatโs typography subletting itโs not indicated separately in below roster.
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.
โ
โ
โ
โ
โ
โ
Button
โ
โ
โ
โ
โ
โ
โ
โ
โ
Buttons
โ
โ
โ
โ
โ๏ธ
โ
โ
โ
โ
Calendar
โ
โ
โ
โ
โ
โ
โ
Categories
โ
โ
โ
โ
โ๏ธ
โ
โ
Code
โ
โ
โ
โ
โ
โ
โ
Column
โ
โ
โ
โ๏ธ
โ
โ
โ
โ
Columns
โ
โ
โ
โ
โ
โ
โ
โ
โ
Comment Author Avatar
โ
โ
โ
โ
โ
โ
Comment Author Name
โ
โ
โ
โ๏ธ
โ
โ
โ
Comment Content
โ
โ
โ
โ๏ธ
โ
โ
โ
Comment Date
โ
โ
โ
โ๏ธ
โ
โ
Comment Edit Link
โ
โ
โ
โ๏ธ
โ
โ
Comment Reply Link
โ
โ
โ
โ๏ธ
โ
โ
Comment Template
โ
โ
โ
โ
โ
โ
โ
Comments
โ
โ
โ
โ
โ
โ
Comments Pagination
โ
โ
โ
โ
โ
โ
โ
Comments Pagination Next
โ
โ
โ
โ
โ
โ
โ
Comments Pagination Numbers
โ
โ
โ
โ
โ
โ
โ
Comments Pagination Previous
โ
โ
โ
โ
โ
โ
โ
Comments Title
โ
โ
โ
โ
โ
โ
โ
โ
Cover
โ
โ
โ
โ
โ
โ
โ
โ
Details
โ
โ
โ
โ
โ
โ
Embed
โ
โ
โ
โ
โ
โ
File
โ
โ
โ
โ
โ๏ธ
โ
โ
โ
Footnotes
โ
โ
โ
โ
Gallery
โ
โ
โ
โ๏ธ
โ
โ
โ
Group
โ
โ
โ
โ
โ
โ
โ
โ
โ๏ธ
โ
Heading
โ
โ
โ
โ
โ๏ธ
โ
โ
โญ๏ธ
Home Link โ Navigation
โ
โ
โ
โ
โ
โ
HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.
โ
โ
โ
โ
โ
โ
Image
โ
โ
โ๏ธ
โ
โ
โ
โ
โ
Latest Comments
โ
โ
โ๏ธ
โ
โ
โ
โ
Latest Posts
โ
โ
โ
โ
โ
โ
โ
List
โ
โ
โ
โ๏ธ
โ
โ
List Item
โ
โ
โ
โ๏ธ
โ
โ
Login/logout
โ
โ
โ
โ
โ
โ
Media & Text
โ
โ
โ
โ
โ๏ธ
โ
โ
โ
More (Read More)
โ
โ
โ
โ
โ
โ
Navigation
โ
โ
โ
โ
โ
โ
Navigation Link
โ
โ
โ
โ
โ
โ
Navigation Submenu
โ
โ
โ
โ
โ
โ
Next Page (Page Break)
โ
โ
โ
โ
โ
โ
Page List
โ
โ
โ
โ
โ
โ
Paragraph
โ
โ
โ
โ๏ธ
โ
โ
โ
โ
Post Author
โ
โ
โ
โ๏ธ
โ
โ
โ
Post Author Biography
โ
โ
โ
โ๏ธ
โ
โ
โ
Post Author Name
โ
โ
โ
โ๏ธ
โ
โ
โ
Post Comments Count
โ
โ
โ
โ
โ
โ
โ
Post Comments Form
โ
โ
โ
โ๏ธ
โ
โ
Post Comments Link
โ
โ
โ
โ
โ
โ
Post Content
โ
โ
โ
โ
โ๏ธ
โ
โ
โ
Post Date
โ
โ
โ
โ๏ธ
โ
โ
โ
Post ExcerptExcerptAn excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that pluginโs metabox.
โ
โ
โ
โ๏ธ
โ
โ
โ
Post Featured ImageFeatured imageA featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts.
After important internal changes to the HTML API in 6.6, WordPress 6.7 brings forward a major leap in support with the HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. Processor.
Major Updates
Full HTML Support
After a long time of only supporting a subset of HTML, the HTML Processor now supports practically all HTML and all HTML tags1. The internal work during the past few releases made it possible to add the remaining support needed to tackle all the colorful varieties of HTML that exist. Only in the rarest situations will the HTML Processor now give up, and in none of these cases is it because the processor doesnโt know how to handle a given tagtagA directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.).
Effectively, the HTML 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 entering a new phase, where the rules for understanding HTML are finally baked in, and the API can start to proliferate into new developer APIs and replace older and buggier HTML processing code.
Ability to modify most text in a document
The first of a new set of modification methods has been added to the HTML API: set_modifiable_text(). When paused on a text node, a special self-contained element like SCRIPT, STYLE, or TITLE, or on a comment, itโs possible to replace the text content of that node.
while ( $processor->next_tag( 'SCRIPT' ) ) {
$existing_script = $processor->get_modifiable_text();
$prefix = "// Careful, this is executable!\n";
$processor->set_modifiable_text( "{$prefix}{$existing_script}" );
}
This method will handle the appropriate escaping for the kind of node it is. For example, it will escape the text for a SCRIPT element in a different way than for a STYLE element or a raw text node. This is important, because it means you donโt have to think about what kind of text it is, but it will remain reliable.
Itโs important to understand here that this operates on the level of individual text nodes. set_modifiable_text() is different than set_inner_text(). A given element may contain multiple text nodes which are separated by things like HTML comments, specific byte sequences, and invalidinvalidA resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. markup which is interpreted as a comment. For set_inner_text() it will be best to wait until the HTML API itself supports these operations.
A full-parser mode in the HTML Processor
Until now, the HTML Processor has provided a slightly unexpected interface. Creating a processor involved a call to create_fragment(), which creates something called a โfragment parser.โ There was a good reason for this: the fragment parser is the version thatโs used in JavaScriptJavaScriptJavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a userโs browser.
https://www.javascript.com when assigning node.innerHTML = newHtml. Unfortunately, the fragment parser cannot ingest an entire document from start to finish. If you worked with the HTML Processor you would have noticed that it gave up as soon as it found the starting <!DOCTYPE html> or <html> tokens.
In WordPress 6.7 the HTML Processor offers create_full_parser() to fill this need. Thanks to completing support for all of the remaining contexts in a document, the HTML Processor can now start with arbitrary HTML and understand how it turns into a DOM tree.
While possibly unexpected, the default implementation with the fragment processor is still the best option in most cases. If youโve ever had to deal with HTML parsing libraries adding <!DOCTYPE html><html><head> (and other tags) to the start of every snippet of HTML that they process, itโs because these tools are performing full parses and full serialization. When working with anything other than a complete HTML document, the fragment parser remains the most appropriate tool. Process fragments of HTML with the fragment parser, and full documents with the full parser.
Normalization of input documents
With the HTML specification rules in place itโs possible to start building higher-level tools and helpers without having to worry about the complexities of HTML. The first of these is WP_HTML_Processor::normalize(), which gives us the HTML we always wanted. Normalizing is the process of taking any HTML input and returning a fully well-formed equivalent document. Since a picture is worth a thousand words:
$html = '</p><p class=wp class=duplicate><[GETTING[started]]><p><?not a tag?></p done=yet?><script><!--<script></script>';
echo WP_HTML_Processor::normalize( $html );
// <p></p><p class="wp"><[GETTING[started]]></p><p><!--?not a tag?--></p>
This little function is packed with utility. It interprets the input HTML the way a browser would, meaning that it applies all of the complicated parsing rules, and it prints out a new serialization of that parsed structure. Attribute quoting, mismatched tags, missing tags, invalid syntax, unexpected whitespace, comments, and more โ it prints out tags without duplicates, where each value is double-quoted, where all relevant syntax characters are encoded, and it even removes partial tokens at the end of the input. Thatโs right, normalize() wonโt leave you hanging โ literally!
$html = 'Just a <em>sneaky but <!-- foiled attempt to hide the rest of the page';
echo WP_HTML_Processor::normalize( $html );
// Just a <em>sneaky but </em>
Significantly, thereโs something extremely valuable in the output of this function: once HTML has been normalized, itโs considerably safer to process with naive parsing tools. Thereโs a guarantee on how the text it produces will appear, so string-based and regular-expression-based tools will instantly become more reliable; the edge cases they fail to handle will never make it out of normalize().
Thorough review and alignment of CSSCSSCascading Style Sheets.-related behaviors
CSS selectors and HTML interact via the document mode, which is either in standards mode or quirks mode. In standards mode, CSS selectors match classes and IDs in a byte-for-byte match. Otherwise they are matched in an ASCII case-insensitive manner. Confusing!
Thankfully, the entire HTML API was audited to ensure compliance even in how CSS class selectors work, and the behavior of methods like has_class(), add_class(), and remove_class() will now respect each documentโs mode. For almost every case this should be the โstandards modeโ and so both of the HTML API processors default to it, matching class names in a byte-for-byte manner. When creating an HTML Processor though with the full parser, since itโs able to determine the document mode from the input HTML, it will make the same choice a browser makes, and when appropriate, will match case-insensitively.
Important changes for existing code.
There should be no significant changes required to existing code written with previous versions of the HTML API. While almost all HTML documents are now supported, itโs still required to verify if the HTML Processor bailed while attempting to process unsupported input.
There were several changes to the way null bytes and whitespace are handled in specific circumstances. These cases represent invalid sections of documents and normal HTML inputs arenโt affected by them.
Since changes were also made with the handling of ASCII casing in CSS class names, there may be cases where a class name previously matched and now wonโt. For example, a browser will not match the CSS class name selector for full-width with an element containing FULL-WIDTH in its class attribute unless the document is parsed in quirks-mode. The HTML API is now processing its inputs in standards mode, matching the behavior of a browser, unless created with a full parser containing the appropriate DOCTYPE to indicate quirks mode. Code that relied on has_class() need not change, but the results in WordPress 6.7 may be different at times because it has become more reliable to the proper handling of these class names.
Enhancements
Low-level parsing updates improved the scanning speed of the Tag Processor by 3.5-7.5%. [Core-61545]
When removing class names, leading whitespace in front of the class name is now removed. [Core-61531]
CSS class names and class selectors behave according to the document mode for the input document, or standards mode if none can be directly inferred. [Core-61531]
Improved spec-compliance by handling remaining HTML tags and insertion modes, including SVG, TABLE, TEMPLATE, and more. [Core-61576]
Added WP_HTML_Processor::create_full_parser() to process entire HTML documents from start to finish. [Core-61576]
Added get_qualified_tag_name() and get_qualified_attribute_name() to return case-variants for certain tags inside foreign content where the HTML rules specify. [Core-61576]
Itโs now possible to replace the value of modifiable text. [Core-61617]
Added get_unsupported_exception() to provide more debugging information when the HTML Processor bails on unsupported input. [Core-61646]
set_attribute() returns false when WordPress rejects the update. [Core-61719]
Added subdivide_text_appropriately() to aid in algorithms wanting to skip null byte or whitespace-only prefixes of text nodes. [Core-61974]
Added normalize() and serialize() to return a normalized representation of parsed input HTML. [Core-62036]
Bug Fixes
class_list() now replaces null bytes with the Unicode replacement character. [Core-61531]
The HTML Processor now properly generates implied end tags. Previously, in some cases, it would generate the end tag but leave the element open on the stack of open elements, leading to mistakes in how it handled later tags in the document. [Core-61576]
The HTML Processor now respects the array form of a next_tag() query when specifying the tag_name. [Core-61581]
The HTML API no longer hangs when fed documents ending with open SCRIPT elements and which end in one of the - or < characters. [Core-61810]
The Tag Processor now reports all un-closed funky comments as having paused at incomplete input. Previously, when the document ended immediately after opening the funky comment, e.g. </# with no more characters, it failed to report the incomplete token. [Core-61831]
There are some unusual situations in HTML which are not supported. They relate to what HTML calls โfosteringโ and โadoption,โ where a nodeโs placement in the document tree does not correspond to where it appears in the HTML source. This arises in roughly 0.5% of all websites on the web and isnโt currently supported in the HTML API. The deprecated PLAINTEXT element is also unsupported. โฉ๏ธ
Interactivity 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. offers a region-based navigation feature that dynamically replaces a part of the page without a full page reload. In fact, the Query 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. natively supports this feature when the โForce page reloadโ toggle is disabled. Developers can use the same functionality in custom blocks by calling action.navigate from the @wordpress/interactivity-router script module. In WordPress 6.7, several changes were introduced to improve the developer experience by making the behavior fully predictable.
During WordPress 6.7 development, we found an issue with the client-side navigation feature the @wordpress/interactivity-router provides: interactive blocks outside of interactive regions could be updated as a result of an actions.navigate call if they depended on state properties. The main problem was that the state properties were always overwritten with the values from the new HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. page, leading to unexpected updates.
Moreover, the same issue affected blocks using the data-wp-context directive, making them work differently depending on whether they were placed inside a router region. In that case, the context was overwritten anytime the HTML was updated with an actions.navigate call.
As a result, this โoverwrite behaviorโ was turned off for both the Interactivity API state and context. Calling actions.navigate will now only add new properties to the state or context and will never overwrite existing properties.
However, updating blocks based on state/context changes is still a legitimate use case. Since WordPress 6.7, a new API is available to subscribe to those changes, exposed from the @wordpress/interactivity module: getServerState() and getServerContext().
These functions return an object that is analogous to the state/context returned by store()/getContext(), with a couple of differences:
The object returned is read-only.
The object is updated after actions.navigate() calls, using the values defined in the HTML of the page loaded by actions.navigate().
Developers cannot directly use its properties in directives, but they can use callbacks to subscribe to changes in its properties and update the usual state/context.
The following example is incomplete but explains how to use the new API. Letโs say we want to develop an interactive Quiz block that updates the question on the screen every time the user submits the answer. Below is a simplified HTML snippet for such a block.
As we can see, the <form> element contains the following directives:
data-wp-namespace, with value example/quiz.
data-wp-router-region, defining a region that should update on navigation.
data-wp-context, with all the data relative to a single question. On the HTML inside the <fieldset> element, we can see all the directives that depend on the context.
data-wp-onโsubmit, which assigns the actions.goToNextQuestion function to navigate to the next question.
data-wp-watch, with callbacks.updateQuestion to update the context. This one is important, as it will run every time any read properties inside change, including properties from getServerContext().
Next is a reduced implementation of these functions:
Now, imagine we click โsubmitโ and navigate to the next question, and the Interactivity API runtime receives the HTML below. As we can see, the data-wp-context data has changed in the server. That will trigger the data-wp-watch directive using callbacks.updateQuestion, and the context will be updated in the client, making all the HTML inside <fieldset> to be modified accordingly.
<form
class="wp-block-quiz-question"
data-wp-interactive="example/quiz"
data-wp-router-region="quiz-question"
data-wp-on--submit="actions.goToNextQuestion"
data-wp-watch="callbacks.updateQuestion"
data-wp-context='
{
"question": "Which is the closest planet to the Sun?",
"answers": ["Mercury", "Venus", "Earth", "Mars"],
"correctAnswer": 0,
"nextQuestion": "/link-to-another-question"
}
'
>
<fieldset>
<!-- The fieldset element's content remains the same. -->
</fieldset>
</form>
In order not to extend too much, suffice it to say that the example would be similar for getServerState(), with the difference that the data is defined in the current page with the wp_interactivity_state() function in PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher, instead of the data-wp-context directive.
GitHubGitHubGitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โpull requestโ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ Pull Request: #65151
WordPress 6.7 introduces a new @wordpress/a11y script module and a new 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. to pass script module data from the server to the client.
Hello all, I must first preface this by saying this is not a post to get into the specifics of whatโs going on with the community right now.
I am no longer contributing to WordPress as things stand. As a result of me stepping down, we need new leadership to take Fields 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. to where it needs to be for WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress..
I have believed over the past decade that we need a Fields API within WordPress itself. I still believe this and many others do too. Iโm hopeful someone will step up and hop into the #core-fields channel on the .org SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ to continue coordinating things from where they are. We need someone with passion and the ability to bring everyone to the table.
The vision as it was during WCUS week before things got sidetracked:
Data Views are awesome and there are things like the PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher DataKit which prove how we can build upon them without leaving many PHP developers behind
Data Forms are really just getting started in core / GutenbergGutenbergThe Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โblocksโ to add richness rather than shortcodes, custom HTML etc.
https://wordpress.org/gutenberg/ and itโs important that work is done to open them up to consume configurations from JSONJSONJSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. or the REST APIREST APIThe REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โphone appโ or โwebsiteโ) can communicate with the data store (think โdatabaseโ or โfile systemโ)
https://developer.wordpress.org/rest-api/ for screens
Both Data Views and Data Forms will eventually spread across the rest of the UIUIUser interface like the User edit screen and plenty of other forms โ this means the Fields API itself will be spread everywhere if we become integrated properly
We should start with the Quick Edit experience which is currently an experiment in Gutenberg you can enable
We should offer a PHP API to register โformsโ, โsectionsโ, and โfieldsโ for those forms โ however we get there
We should include those registered configs in the REST API for the post type
A great deal of research was done originally and Fields API has been through a number of concepts:
Thereโs so much more I wish I could share in my vision on this and spend lots of time with images + video screencast showing you through what I was extremely excited about at WCUS.
Finally, I want to say thank you to everyone who believed in me and the project. Thank you to many of the Gutenberg contributors who spent their time with me at WCUS contributor dayContributor DayContributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/ unblocking our overall goal. They were on board with this. I will always be a fan of those contributors doing their best to make WordPress better.
We were so close here, I believe that if someone steps up then we could see some semblance of a Fields API finally committed to WordPress 6.8. I just wonโt be there to enjoy the fruits of that labor.
Goodbye everyone, but I wonโt be that far away. Iโll be rooting for those of you making WordPress the best it can be and choosing your own paths going forward. Who knows what the future holds, I may return one day in the future if circumstances change for me personally.
Currently there is no easy way to identify TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets specifically for adding unit tests. Some are added to the Build/Test Tools component, however the tests are not really โtoolsโ. The reason for this is that unit tests, just like build and test tools, are โnon-production codeโ. That means they can be committed at any time during the WordPress development cycle and do not follow the general milestones-based workflow.
Additionally, many tickets for adding unit tests are marked as โenhancementsโ. Following the release cycle workflow, enhancements cannot be committed during betaBetaA pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. and RCrelease candidateOne of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta).. However, in practice unit tests can be committed at any time. It can be difficult to isolate these today, as the Trac search form lacks a filterFilterFilters 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. for such tickets, which makes triaging a bit harder.
Some suggestions
During the discussion in #core, several ideas were proposed about how this can be made to work better. And while there isnโt currently much traction on adding E2E tests to CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress., any option explored should take this test type into account. In no particular order:
Component: A new Tests component, which would be exempt from the general workflow, similar to Build/Test Tools. Example component filter.
Focus:ย Aย testsย focus, similar to the existingย docsย focus. Example focus filter.
Keyword:ย Aย tests-onlyย keyword to identify that itโs for unit/E2E tests only, and serve to filter tickets for triagetriageThe act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. reports. Example keyword filter.
Milestone:ย Anย Any Timeย milestone could indicate when this type of ticketticketCreated for both bug reports and feature development on the bug tracker. could be committed, being primarily reserved for tests- and docs-only tickets. Example milestone filter.
Type:ย A test ticket type, to clearly differentiate from the current defect (bug),ย enhancement, andย task (blessed)ย types. Example type filter.
Type (alternative): A new non-production type could be introduced to broadly cover any ticket that does not affect build/production code. Example type filter.
I think that any of the proposed solutions would make searching and triaging test-oriented tickets a bit easier. Some are more flexible in that itโs easier to combine terms (focuses and keywords).
What are your thoughts on these ideas to make test-only tickets easier to distinguish? Please help continue the discussion in the comments below!
Summary of the WordPress Developer Blogblog(versus network, site) meeting which took place in the ย #core-dev-blog channel on the Make WordPress SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. Start of the meeting on Slack.
A big thank you was shared to both writers and reviewers. Also a thank you to everyone who comments on a proposal and helps move it forward to publication. It really is a community effort.
Project board status
@webcommsat: To encourage async contribution and those who are unable to join, as well as gather wider feedback, do add comments after the meeting to the GitHubGitHubGitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โpull requestโ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ tickets that items in this section are linked to.
On the first item, optimizing your WP_Query queries for better performance, the second version is available to review. I have it down as a task for later today. Is anyone else also planning to go through it?
Birgit and I have been going through this last week, and I am hoping to catch up with Olga about it too.
Aware that WCUS has been in the middle. Thanks Justin and Milana for your comments on this too. Justin and Milana have offered additional assistance on GitHub.
There are some comments already on the ticketticketCreated for both bug reports and feature development on the bug tracker.. Birgit has suggested some actions.
If anyone else has comments, please can you add them to the ticket.
@greenshady: there has been a roadblock with the Playground blueprint one. Thereโs 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. thatโs likely to hold up its progress for a bit. The issue has already been reported and some discussion around it.
Exploring post formats in a block theme world (maybe with 6.7 additions) โ this relies on some things that may not be part of WordPress 6.7. @greenshady doing a progress check on it, and believes itโs possible to still do a good walkthrough of what you can do without the extra changes in CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress..
The topic idea Modifying text with the HTML API in WordPress 6.7 needs to simmer some more to see if there will be more elaborate examples coming in the next major WordPress version. @greenshady has brought it back to the October meeting should the topic be deemed mature enough for a blog post.
@greenshady: On those two topics, particularly 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. Bindings, they came up late in the Dev Cycle. I think theyโd be solid additions to showcase WP 6.7 features. I need to do some more testing myself to roll out better outlines. But anyone is free to pick them up before I get to them (as always).
@webcommsat thanked everyone for participating. @bph will create issues for each of the approved topics, so they can get on the to do-list.
Open floor
Proposal for new content type:
@greenshady raised a separate proposal about a content type rather than a specific topic: Snippets/shorts/bite-sized tutorials. โI have a ton of code that doesnโt make sense for long-form tutorials, but theyโd make great quick tutorials thatโd only take a couple of paragraphs and a single code block to explain. I think they have a place on the Dev Blog, but I wanted to get feedback from you all.โ
He asked if anyone was opposed to doing some of these smaller tutorials and adding a custom categoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging./tagtagA directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) for them (snippets? shorts?).
@meszarosrob felt there was value in this idea. Many times I have been inspired by seeing what somebody did.
@greenshady: if necessary, offered to write the conditional patterns one as a proof of concept and get feedback from the group
@webcommsat reminded people to continue to comment on the tickets on GitHub and add ideas for future pieces. Thank you to all contributors during the last month.
DataViews and DataForm have been the foundation of the overall admin design efforts, for now, visible in the site editor. 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. and agency developers can already start using the components for their WordPress customizations.ย
The `DataForm` API was introduced in GutenbergGutenbergThe Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โblocksโ to add richness rather than shortcodes, custom HTML etc.
https://wordpress.org/gutenberg/ 18.8 as part of a larger effort to reduce duplicated form code in Data Views. Work has continued over the last few releases, and Gutenberg 19.4 added support for the `combinedFields` layout, enabling multiple fields to be rendered in the same row.
Join this informal discussion and learn about the work in progress.ย Zoom link will be shared in the #outreachSlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ channel and in a comment on this post on Oct. 23, 2024
GitHubGitHubGitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โpull requestโ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ issues for context:
WordPress 6.7 Beta 2ย was released on October 8. Thank you to everyone who contributed to this release and attended the release party! There isย a helpful guide hereย on how to help test this release.
During the meeting, @peterwilsoncc and @marybaum updated the Playground link in the news post to correctly load WP 6.7 BetaBetaA pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 2.
Forthcoming releases
Nextย major releasemajor releaseA release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope.: 6.7
@peterwilsoncc shared that thereโs been a change in the release squad. @get_dave will be replacing @noisysocks in the co-editor tech lead role. Kai will remain as the other editor tech lead. The WP 6.7. release page will be updated to reflect the addition of @get_dave while keeping @noisysocks as a listed co-lead to acknowledge his contributions to this release.
Next maintenance release
There are no maintenance releases planned at this time.
This week, continuing to triagetriageThe act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. tickets reported against 6.6.x (ieย Version). Then can do a 6.6.3 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. scrub inย #coreย to help with assessment and resolutions.
Nextย GutenbergGutenbergThe Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โblocksโ to add richness rather than shortcodes, custom HTML etc.
https://wordpress.org/gutenberg/ย release: 19.4
The next Gutenberg release will be 19.4, scheduled for October 9, and will includeย the following issues.
Discussion
There were no discussion topics raised this week, so @joemcgill shared the following issues that were raised in the #6-7-release-leads channel:
A reminder that there are a number of bugs on theย 6.7 Editor project boardย that need addressing. Specifically, the new Zoom Out Mode has many issues. Most are minor, but additional help on these would be great.
One issue that could use your eyes isย 65644. Itโs a pretty unfortunate bug, given TT5 will heavily rely on section styles. If you can help fix this issue, or know someone who might be able to, please reach out!
@peterwilsoncc asked for feedback on #59684. Specifically, wondering where where wp_save_image is tested so he can ensure he doesnโt break 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. data in an attempt to fix it. @joemcgill agreed to follow up after the meeting.
Open Floor
Brad Vasked for clarity about whether PRs for default themes should be made against wordpress-develop.
โWhatโs new in GutenbergGutenbergThe Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โblocksโ to add richness rather than shortcodes, custom HTML etc.
https://wordpress.org/gutenberg/โฆโ posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, hereโs an overview of different ways to keep up with Gutenberg and the Site Editor project (formerly called Full Site Editing).
This release includes 186 PRs from 54 contributors, and includes several exciting features such as new Write / Design modes and 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. Bindings editor APIs.
The Edit and Select modes are now called Write and Design modes.
In Write mode, you can focus solely on writing, with all layout options hidden from the sidebarSidebarA sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme..
If you want to adjust colors, sizes, create columns, and more, switch to Design mode!
Block Bindings Editor APIs are public
Gutenberg 19.4 and WordPress 6.7 will allow developers to use certain block binding APIs that were previously private and used only in CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.. A dev notedev noteEach important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. and documentation will be published for the WordPress 6.7 release, but here is an overview:
getBlockBindingsSource, getBlockBindingsSources: The first retrieves a specific block binding source and its properties, while the second retrieves a list of all block binding sources.
updateBlockBindings: Similar to updateBlockAttributes, this function allows you to create or remove connections between a block and any source.
removeAllBlockBindings: Removes all connections from a block to any source.
registerBlockBindingsSource, unregisterBlockBindingsSource: Enables registering and unregistering block bindings in the editor. Registering them in the editor allows modification of source fetching and editing.
Other Notable Highlights
There are some improvements too that are worthy to mention like:
Comment block components (e.g., author name, date, content, pagination) and Query block components (e.g., no results, pagination, title) will now have previews when hovered over in the inserter panel.
Additionally, the BorderBoxControl, BorderControl, and BoxControl components are now considered stable.(65469, 65475, 65586)
Also the filters PreSavePost and SavePost are now stable. (64198)
Not to mention all the bugs fixed that you can check in the changelog below.
Changelog
Enhancements
Block Library
Added keywords to query loopLoopThe Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop block. (65515)
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.: Add block example. (65509)
Move the toggle button to before the device preview dropdown. (65446)
Only show zoom out inserters on block selection. (65759)
Block Editor
Hide block transforms in contentOnly mode for non-content blocks. (65394)
Inserter: Always show the list of all patterns in the inserter. (65611)
MediaPlaceholder: Use InputControl in URLURLA specific web address of a website or web page on the Internet, such as a websiteโs URL www.wordpress.org popover. (65656)
Use proper named File when uploading external images. (65693)
FilterFilterFilters 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.UIUIUser interface: Remove popover max height. (65835)
Block hooksHooksIn WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.
Hooks: Add support for async filters and actions. (64204)
New APIs
Revert โMake wordpress/fields a private packageโ. (65477)
Link autocompleter: Decode post title HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. entities. (65589)
Openverse: Prevent multiple insertions during upload. (65719)
Paste Handler: Try to fix pasting text with formatting. (63779)
Fix: Makes edit mode selector persistent in top toolbar mode. (65511)
Global styles: Do not navigate twice to home screen when opening the sidebar. (65523)
Make resizable frame compatible with RTL languages. (65545)
Command Palette: Fix โAdd new pageโ command for hybrid theme. (65534)
Export useResizeObserverReactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces.
https://reactjs.org Native version directly. (65588)
Fix aria-checked attribute not set for 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. settings buttons in Options dropdown. (65667)
Revert โuseToolsPanel: Calculate menuItems in layout effect to avoid painting intermediate stateโ. (65533)
Focus Mode
Limit zoom out toggle to specific post types. (65732)
Remove additional Typeset screen and surface typesets in the typography panel. (65579)
Widgets Editor
Fixed the focus cutoff of the editor buttons in the widgets editor. (65395)
Post Editor
Omit 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. boxes on โdesignโ type posts. (64990)
Temp disable test for Classic Block Media issue. (65793)
Select Mode
Select Mode: Blocks outside the main sections root should be disabled. (65518)
Select Mode: Prevent the inbetween inserter from triggering within sections. (65529)
AccessibilityAccessibilityAccessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โdirect accessโ (i.e. unassisted) and โindirect accessโ meaning compatibility with a personโs assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)
Post Editor
Make the Settings panel toggle button show its keyboard shortcut in its tooltip. (65322)
Resizable Editor: Make the editor resizable with arrow keys. (65546)
Components
ToggleGroupControl: Fix arrow key navigation in RTL. (65735)
Zoom Out
Donโt show tooltip in zoom out toggle button when showIconLabels is true. (65573)
Block Library
Improve the Query Loop block display settings labels. (65524)
Block Editor
Updates LayoutTypeSwitcher to use ToggleGroupControl. (65498)
Code Quality
A11yAccessibilityAccessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โdirect accessโ (i.e. unassisted) and โindirect accessโ meaning compatibility with a personโs assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility): Move script module HTML printing to 6.7 compat. (65620)
Update to use a11y script module package in Core. (65539)
Move insertionPoint state to block-editor store/rename existing insertionPoint to insertionCue. (65098)
Documentation
Block Bindings: Add @sincetagtagA directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) in bindings apis JSDocs. (65796)
Block Editor: Fix README for FontFamilyControl component. (65660)
Only pass usesContext properties to editor APIs. (65661)
Refactor passing select and dispatch instead of full Registry. (65710)
Unify logic in getPostMetaFields function. (65462)
Post Editor
Customize widgets, edit post: Refactor Button to new sizes. (65807)
HeaderHeaderThe header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitorโs opinion about your content and you/ your organizationโs brand. It may also look different on different screen sizes.: Remove unused property isZoomedOutView in useSelect(). (65628)
Global style revisionsRevisionsThe WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.: Remove unnecessary goTo navigation call. (65810)
GH Actions: Run the tests against PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher 8.3. (65357)
Revert โTemp disable test for Classic Block Media issue.โ. (65809)
Build Tooling
Composer: Prevent a lock file from being created. (65359)
You must be logged in to post a comment.