WordPress/wp-includes
dmsnell 62e0ef411b HTML API: Scan all syntax tokens in a document, read modifiable text.
Since its introduction in WordPress 6.2 the HTML Tag Processor has
provided a way to scan through all of the HTML tags in a document and
then read and modify their attributes. In order to reliably do this, it
also needed to be aware of other kinds of HTML syntax, but it didn't
expose those syntax tokens to consumers of the API.

In this patch the Tag Processor introduces a new scanning method and a
few helper methods to read information about or from each token. Most
significantly, this introduces the ability to read `#text` nodes in the
document.

What's new in the Tag Processor?
================================

 - `next_token()` visits every distinct syntax token in a document.
 - `get_token_type()` indicates what kind of token it is.
 - `get_token_name()` returns something akin to `DOMNode.nodeName`.
 - `get_modifiable_text()` returns the text associated with a token.
 - `get_comment_type()` indicates why a token represents an HTML comment.

Example usage.
==============

{{{
<?php
function strip_all_tags( $html ) {
        $text_content = '';
        $processor    = new WP_HTML_Tag_Processor( $html );

        while ( $processor->next_token() ) {
                if ( '#text' !== $processor->get_token_type() ) {
                        continue;
                }

                $text_content .= $processor->get_modifiable_text();
        }

        return $text_content;
}
}}}

What changes in the Tag Processor?
==================================

Previously, the Tag Processor would scan the opening and closing tag of
every HTML element separately. Now, however, there are special tags
which it only visits once, as if those elements were void tags without
a closer.

These are special tags because their content contains no other HTML or
markup, only non-HTML content.

 - SCRIPT elements contain raw text which is isolated from the rest of
   the HTML document and fed separately into a JavaScript engine. There
   are complicated rules to avoid escaping the script context in the HTML.
   The contents are left verbatim, and character references are not decoded.

 - TEXTARA and TITLE elements contain plain text which is decoded
   before display, e.g. transforming `&amp;` into `&`. Any markup which
   resembles tags is treated as verbatim text and not a tag.

 - IFRAME, NOEMBED, NOFRAMES, STYLE, and XMP elements are similar to the
   textarea and title elements, but no character references are decoded.
   For example, `&amp;` inside a STYLE element is passed to the CSS engine
   as the literal string `&amp;` and _not_ as `&`.

Because it's important not treat this inner content separately from the
elements containing it, the Tag Processor combines them when scanning
into a single match and makes their content available as modifiable
text (see below).

This means that the Tag Processor will no longer visit a closing tag for
any of these elements unless that tag is unexpected.

{{{
    <title>There is only a single token in this line</title>
    <title>There are two tokens in this line></title></title>
    </title><title>There are still two tokens in this line></title>
}}}

What are tokens?
================

The term "token" here is a parsing term, which means a primitive unit in
HTML. There are only a few kinds of tokens in HTML:

 - a tag has a name, attributes, and a closing or self-closing flag.
 - a text node, or `#text` node contains plain text which is displayed
   in a browser and which is decoded before display.
 - a DOCTYPE declaration indicates how to parse the document.
 - a comment is hidden from the display on a page but present in the HTML.

There are a few more kinds of tokens that the HTML Tag Processor will
recognize, some of which don't exist as concepts in HTML. These mostly
comprise XML syntax elements that aren't part of HTML (such as CDATA and
processing instructions) and invalid HTML syntax that transforms into
comments.

What is a funky comment?
========================

This patch treats a specific kind of invalid comment in a special way.
A closing tag with an invalid name is considered a "funky comment." In
the browser these become HTML comments just like any other, but their
syntax is convenient for representing a variety of bits of information
in a well-defined way and which cannot be nested or recursive, given
the parsing rules handling this invalid syntax.

 - `</1>`
 - `</%avatar_url>`
 - `</{"wp_bit": {"type": "post-author"}}>`
 - `</[post-author]>`
 - `</__( 'Save Post' );>`

All of these examples become HTML comments in the browser. The content
inside the funky content is easily parsable, whereby the only rule is
that it starts at the `<` and continues until the nearest `>`. There
can be no funky comment inside another, because that would imply having
a `>` inside of one, which would actually terminate the first one.

What is modifiable text?
========================

Modifiable text is similar to the `innerText` property of a DOM node.
It represents the span of text for a given token which may be modified
without changing the structure of the HTML document or the token.

There is currently no mechanism to change the modifiable text, but this
is planned to arrive in a later patch.

Tags
====

Most tags have no modifiable text because they have child nodes where
text nodes are found. Only the special tags mentioned above have
modifiable text.

{{{
    <div class="post">Another day in HTML</div>
    └─ tag ──────────┘└─ text node ─────┘└────┴─ tag
}}}

{{{
    <title>Is <img> &gt; <image>?</title>
    │      └ modifiable text ───┘       │ "Is <img> > <image>?"
    └─ tag ─────────────────────────────┘
}}}

Text nodes
==========

Text nodes are entirely modifiable text.

{{{
    This HTML document has no tags.
    └─ modifiable text ───────────┘
}}}

Comments
========

The modifiable text inside a comment is the portion of the comment that
doesn't form its syntax. This applies for a number of invalid comments.

{{{
    <!-- this is inside a comment -->
    │   └─ modifiable text ──────┘  │
    └─ comment token ───────────────┘
}}}

{{{
    <!-->
    This invalid comment has no modifiable text.
}}}

{{{
    <? this is an invalid comment -->
    │ └─ modifiable text ────────┘  │
    └─ comment token ───────────────┘
}}}

{{{
    <[CDATA[this is an invalid comment]]>
    │       └─ modifiable text ───────┘ │
    └─ comment token ───────────────────┘
}}}

Other token types also have modifiable text. Consult the code or tests
for further information.

Developed in https://github.com/WordPress/wordpress-develop/pull/5683
Discussed in https://core.trac.wordpress.org/ticket/60170

Follows [57575]

Props bernhard-reiter, dlh, dmsnell, jonsurrell, zieladam
Fixes #60170


Built from https://develop.svn.wordpress.org/trunk@57348


git-svn-id: http://core.svn.wordpress.org/trunk@56854 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-24 23:37:16 +00:00
..
ID3 External Libraries: Update getID3 to version 1.9.23. 2023-10-20 13:29:27 +00:00
IXR Code Modernization: Use correct property in `IXR_Message::tag_open()`. 2023-01-20 01:36:10 +00:00
PHPMailer External Libraries: Upgrade PHPMailer to version 6.9.1. 2023-11-26 19:27:25 +00:00
Requests External Libraries: Update Requests to `2.0.9`. 2023-11-08 19:47:26 +00:00
SimplePie
Text Docs: Fix several typos in inline comments. 2024-01-18 22:13:16 +00:00
assets Editor: update npm packages in trunk for 6.4.3. 2024-01-09 20:17:30 +00:00
block-patterns REST API: Bring new endpoints for Block Patterns from Gutenberg plugin 2022-04-12 09:26:16 +00:00
block-supports Editor: fix fluid font division by zero error when min and max viewport widths are equal. 2024-01-23 05:57:15 +00:00
blocks Editor: update npm packages in trunk for 6.4.3. 2024-01-09 20:17:30 +00:00
certificates
css Administration: Accessibility: Improve color contrast of the Copy buttons success message. 2024-01-11 15:52:14 +00:00
customize Script Loader: Use `wp_get_script_tag()` and `wp_get_inline_script_tag()`/`wp_print_inline_script_tag()` helper functions to output scripts on the frontend and login screen. 2023-09-25 21:05:21 +00:00
fonts Fonts: Get font-family name from 'fontFamily' field. 2023-09-25 21:29:17 +00:00
html-api HTML API: Scan all syntax tokens in a document, read modifiable text. 2024-01-24 23:37:16 +00:00
images Build/Test Tools: Expand "imagemin" Grunt task to cover default themes. 2024-01-22 11:43:18 +00:00
js Editor: update npm packages in trunk for 6.4.3. 2024-01-09 20:17:30 +00:00
l10n I18N: Improve docblocks after [57337]. 2024-01-24 07:57:14 +00:00
php-compat Tests: Use a `@requires` annotation for `readonly()` function test. 2023-10-26 20:33:22 +00:00
pomo Docs: Fix typo in `Gettext_Translations::parenthesize_plural_exression()` description. 2023-12-06 11:54:17 +00:00
rest-api Bootstrap/Load: Introduce functions to check whether WordPress is serving a REST API request. 2024-01-19 17:40:09 +00:00
sitemaps Coding Standards: Correct equals sign alignment in various files. 2023-11-02 00:04:24 +00:00
sodium_compat Upgrade/Install: Update sodium_compat to v1.20.0. 2023-04-30 14:08:23 +00:00
style-engine Editor: add size and repeat to background image support. 2024-01-09 06:12:18 +00:00
theme-compat I18N: Improve translator comments for strings containing date formats. 2023-11-26 16:43:30 +00:00
widgets Script Loader: Harden removal of script tag wrappers. 2023-09-29 19:47:21 +00:00
admin-bar.php Toolbar: Add a Plugins link to the admin bar menu. 2023-12-13 21:18:19 +00:00
atomlib.php Code Modernization: Rename parameters that use reserved keywords in `wp-includes/atomlib.php`. 2022-04-21 11:24:17 +00:00
author-template.php Code Modernization: Correct fallback return value in `get_the_author()`. 2023-05-14 17:58:24 +00:00
block-editor.php Editor: Remove 'wp-edit-site' stylesheet enqueue from iframe. 2023-09-27 17:40:20 +00:00
block-i18n.json
block-patterns.php Themes: Correct docblock for _register_theme_block_patterns. 2023-11-10 15:12:27 +00:00
block-template-utils.php Editor: Clarify single post and page template descriptions. 2024-01-10 17:08:11 +00:00
block-template.php Themes: Skip wrapping block template for singular content with a main query loop when the template was injected from outside the current theme. 2023-10-27 18:18:22 +00:00
blocks.php Block Hooks: Store ignored hooked blocks metadata in anchor block. 2023-12-04 20:26:22 +00:00
bookmark-template.php Code Modernization: Replace usage of `substr()` with `str_starts_with()` and `str_ends_with()`. 2023-06-22 14:57:24 +00:00
bookmark.php General: Revert code changes from [57191]. 2023-12-15 14:33:25 +00:00
cache-compat.php Cache API: Introduce `wp_cache_supports()` function. 2022-10-10 18:22:11 +00:00
cache.php Cache API: Introduce `wp_cache_supports()` function. 2022-10-10 18:22:11 +00:00
canonical.php Media: Revert [57310]. 2024-01-20 00:00:11 +00:00
capabilities.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
category-template.php Coding Standards: Upgrade WPCS to version 3.0.0. 2023-09-26 00:27:12 +00:00
category.php Docs: Wrap inline `@see` tags in curly braces. 2023-08-24 09:01:16 +00:00
class-IXR.php
class-feed.php
class-http.php General: Use `WPINC` as a shorter reference to `wp-includes` in some files. 2022-06-17 11:20:13 +00:00
class-json.php HTTP API: Fix request header inconsistencies. 2023-02-03 13:35:20 +00:00
class-oembed.php General: Use `WPINC` as a shorter reference to `wp-includes` in some files. 2022-06-17 11:20:13 +00:00
class-phpass.php External Libraries: Prevent a PHP 8.1 deprecation notice in `PasswordHash::gensalt_blowfish()`. 2023-02-13 09:08:23 +00:00
class-phpmailer.php
class-pop3.php Mail: Check that `set_time_limit()` function is available before using it in `class-pop3.php`. 2023-02-11 12:43:22 +00:00
class-requests.php External Libraries: Update the Requests library to version 2.0.6. 2023-04-05 13:12:26 +00:00
class-simplepie.php Docs: Various corrections and improvements to inline docs and docblocks. 2023-05-12 21:35:21 +00:00
class-smtp.php
class-snoopy.php HTTP API: Fix request header inconsistencies. 2023-02-03 13:35:20 +00:00
class-walker-category-dropdown.php Coding Standards: Restore more descriptive variable names in a few class methods. 2023-09-14 12:46:20 +00:00
class-walker-category.php Coding Standards: Remove superfluous blank lines at the end of various classes. 2023-09-08 09:32:23 +00:00
class-walker-comment.php Coding Standards: Use pre-increment/decrement for stand-alone statements. 2023-09-09 09:28:26 +00:00
class-walker-nav-menu.php Menus: Allow themes and plugins to pass HTML attributes to various Nav Walker outputs. 2023-06-27 15:26:27 +00:00
class-walker-page-dropdown.php Coding Standards: Restore more descriptive variable names in a few class methods. 2023-09-14 12:46:20 +00:00
class-walker-page.php Coding Standards: Restore more descriptive variable names in a few class methods. 2023-09-14 12:46:20 +00:00
class-wp-admin-bar.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
class-wp-ajax-response.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-application-passwords.php Docs: A host of corrections and improvements to inline documentation. 2023-05-08 22:37:24 +00:00
class-wp-block-editor-context.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-block-list.php Coding Standards: Correct equals sign alignment in various files. 2023-11-02 00:04:24 +00:00
class-wp-block-parser-block.php Editor: Update block-serialization-default-parser package for WP 6.3 Beta 1. 2023-06-27 00:45:38 +00:00
class-wp-block-parser-frame.php Editor: Update block-serialization-default-parser package for WP 6.3 Beta 1. 2023-06-27 00:45:38 +00:00
class-wp-block-parser.php Update editor related npm packages for 6.4 RC1. 2023-10-16 19:17:19 +00:00
class-wp-block-pattern-categories-registry.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-block-patterns-registry.php Patterns, Templates: Inject `theme` attr into Template Part blocks. 2023-10-17 15:48:23 +00:00
class-wp-block-styles-registry.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-block-supports.php Editor: Replace property_exists calls in block related functions with instanceof 2023-09-29 10:20:30 +00:00
class-wp-block-template.php REST API: return post modified datetime for Templates. 2023-06-23 06:29:23 +00:00
class-wp-block-type-registry.php Prevent unintended behavior when certain objects are unserialized. 2023-10-12 12:34:33 +00:00
class-wp-block-type.php Editor: Support deferred block variation initialization on the server. 2024-01-19 20:54:13 +00:00
class-wp-block.php Coding Standards: Use pre-increment/decrement for stand-alone statements. 2023-09-09 09:28:26 +00:00
class-wp-classic-to-block-menu-converter.php Editor: Fix error handling of converting classic to block menus. 2023-08-21 17:51:19 +00:00
class-wp-comment-query.php Docs: Add missing full stop in `WP_Comment_Query::parse_query()` DocBlock. 2024-01-23 22:28:15 +00:00
class-wp-comment.php Docs: Add missing @param description in `WP_Comment` class. 2023-08-24 08:44:24 +00:00
class-wp-customize-control.php Coding Standards: Remove superfluous blank lines at the end of various classes. 2023-09-08 09:32:23 +00:00
class-wp-customize-manager.php Customize: Pass the previous status to post trash hooks when trashing a changeset. 2024-01-03 16:22:20 +00:00
class-wp-customize-nav-menus.php Script Loader: Use `wp_get_script_tag()` and `wp_get_inline_script_tag()`/`wp_print_inline_script_tag()` helper functions to output scripts on the frontend and login screen. 2023-09-25 21:05:21 +00:00
class-wp-customize-panel.php Coding Standards: Correct spacing for spread operators. 2023-09-10 09:04:18 +00:00
class-wp-customize-section.php Coding Standards: Correct spacing for spread operators. 2023-09-10 09:04:18 +00:00
class-wp-customize-setting.php Coding Standards: Correct spacing for spread operators. 2023-09-10 09:04:18 +00:00
class-wp-customize-widgets.php Docs: Fix several typos in inline comments. 2024-01-18 22:13:16 +00:00
class-wp-date-query.php Docs: Fix typo in `WP_Date_Query::build_mysql_datetime()` DocBlock. 2023-12-14 10:23:27 +00:00
class-wp-dependencies.php Coding Standards: Remove superfluous blank lines at the end of various classes. 2023-09-08 09:32:23 +00:00
class-wp-dependency.php Docs: Correct the type for `_WP_Dependency::$src` property. 2022-11-25 15:12:16 +00:00
class-wp-duotone.php I18N: Move code out of translatable strings in a few error messages. 2023-11-25 21:19:30 +00:00
class-wp-editor.php Docs: Document the `$current_screen` global in `_WP_Editors::editor()`. 2023-12-16 09:31:29 +00:00
class-wp-embed.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
class-wp-error.php Docs: Document default values for optional parameters in various DocBlocks. 2023-02-21 16:39:19 +00:00
class-wp-fatal-error-handler.php Docs: Document the `$wp_locale` global in `WP_Fatal_Error_Handler::handle()`. 2023-12-16 09:38:25 +00:00
class-wp-feed-cache-transient.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-feed-cache.php Docs: Remove `@see` references for SimplePie classes. 2023-08-10 01:06:21 +00:00
class-wp-hook.php Plugins: Store result of call to array_keys, to save repeated calls in WP_Hook class. 2023-09-18 12:41:18 +00:00
class-wp-http-cookie.php Code Modernization: Use `str_starts_with()` and `str_ends_with()` in a few more places. 2023-06-24 17:17:23 +00:00
class-wp-http-curl.php HTTP API: Deprecate `WP_Http_Curl` and `WP_Http_Streams` classes. 2023-09-21 18:29:12 +00:00
class-wp-http-encoding.php Code Modernization: Replace usage of `substr()` with `str_starts_with()` and `str_ends_with()`. 2023-06-22 14:57:24 +00:00
class-wp-http-ixr-client.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-http-proxy.php Code Modernization: Replace usage of `strpos()` with `str_contains()`. 2023-06-22 14:36:26 +00:00
class-wp-http-requests-hooks.php External Libraries: Update Requests library to version 2.0.0. 2022-12-15 21:32:17 +00:00
class-wp-http-requests-response.php Docs: Use US spelling and correct a typing mistake. 2023-10-11 07:05:25 +00:00
class-wp-http-response.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-http-streams.php HTTP API: Deprecate `WP_Http_Curl` and `WP_Http_Streams` classes. 2023-09-21 18:29:12 +00:00
class-wp-http.php HTTP API: Deprecate the `http_api_transports` filter. 2023-09-26 16:55:20 +00:00
class-wp-image-editor-gd.php Docs: Correct punctuation in some instances of the `$crop` parameter description. 2023-08-19 00:10:23 +00:00
class-wp-image-editor-imagick.php Coding Standards: Remove superfluous blank lines at the end of various classes. 2023-09-08 09:32:23 +00:00
class-wp-image-editor.php Coding Standards: Remove superfluous blank lines at the end of various files. 2023-09-07 14:59:21 +00:00
class-wp-list-util.php Coding Standards: Use pre-increment/decrement for stand-alone statements. 2023-09-09 09:28:26 +00:00
class-wp-locale-switcher.php I18N: Introduce a more performant localization library. 2024-01-23 13:34:11 +00:00
class-wp-locale.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:25:23 +00:00
class-wp-matchesmapregex.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-meta-query.php Coding Standards: Use pre-increment/decrement for stand-alone statements. 2023-09-09 09:28:26 +00:00
class-wp-metadata-lazyloader.php Networks and Sites: Lazy load site meta. 2023-05-11 11:15:24 +00:00
class-wp-navigation-fallback.php Editor: Move `wp_navigation` schema updating to `WP_Navigation_Fallback` class. 2023-10-06 14:06:22 +00:00
class-wp-network-query.php Cache API: Introduce new queries cache groups. 2023-03-10 16:30:03 +00:00
class-wp-network.php Coding Standards: Use strict comparison in `wp-includes/class-wp-network.php`. 2023-07-12 09:46:25 +00:00
class-wp-object-cache.php Docs: Fix typo in `_validate_cache_id()` description. 2023-03-14 16:55:19 +00:00
class-wp-oembed-controller.php Docs: Document the usage of globals in some functions. 2022-11-13 13:51:20 +00:00
class-wp-oembed.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:25:23 +00:00
class-wp-paused-extensions-storage.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-post-type.php REST API: Fix issue with Template and Template Part Revision/Autosave REST API controllers. 2023-10-10 14:05:21 +00:00
class-wp-post.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-query.php Bootstrap/Load: Introduce functions to check whether WordPress is serving a REST API request. 2024-01-19 17:40:09 +00:00
class-wp-recovery-mode-cookie-service.php Security: Additional translations of salt default phrase. 2022-10-04 03:59:13 +00:00
class-wp-recovery-mode-email-service.php Code Modernization: Replace usage of `strpos()` with `str_starts_with()`. 2023-05-02 15:45:22 +00:00
class-wp-recovery-mode-key-service.php Docs: Document the `$wp_hasher` global in `wp_generate_user_request_key()`. 2023-12-24 13:05:21 +00:00
class-wp-recovery-mode-link-service.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-recovery-mode.php Code Modernization: Replace usage of `strpos()` with `str_starts_with()`. 2023-05-02 15:45:22 +00:00
class-wp-rewrite.php Coding Standards: Use pre-increment/decrement for stand-alone statements. 2023-09-09 09:28:26 +00:00
class-wp-role.php Coding Standards: Remove superfluous blank lines at the end of various classes. 2023-09-08 09:32:23 +00:00
class-wp-roles.php Coding Standards: Use strict comparison in `wp-includes/class-wp-roles.php`. 2023-07-28 11:37:25 +00:00
class-wp-script-modules.php Script Loader: Load the modules to the footer in classic themes 2024-01-24 10:39:18 +00:00
class-wp-scripts.php Script Loader: Move delayed head script to footer when there is a blocking footer dependent. 2023-10-13 18:46:21 +00:00
class-wp-session-tokens.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-simplepie-file.php Docs: Remove `@see` references for SimplePie classes. 2023-08-10 01:06:21 +00:00
class-wp-simplepie-sanitize-kses.php Docs: Remove `@see` references for SimplePie classes. 2023-08-10 01:06:21 +00:00
class-wp-site-query.php Code Modernization: Replace usage of `strpos()` with `str_contains()`. 2023-06-22 14:36:26 +00:00
class-wp-site.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-styles.php Code Modernization: Replace usage of `strpos()` with `str_starts_with()`. 2023-05-02 15:45:22 +00:00
class-wp-tax-query.php Docs: Replace "sanity" with "confidence" for inclusive language. 2024-01-03 21:59:19 +00:00
class-wp-taxonomy.php Docs: All sorts of improvements and corrections to function and hook docs. 2023-04-27 23:15:17 +00:00
class-wp-term-query.php Docs: Correct some docblock formatting errors. 2023-11-01 15:10:20 +00:00
class-wp-term.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-text-diff-renderer-inline.php Coding Standards: Remove superfluous blank lines at the end of various classes. 2023-09-08 09:32:23 +00:00
class-wp-text-diff-renderer-table.php Code Modernization: Declare dynamic properties on WP_Text_Diff_Renderer_Table. 2023-10-15 14:55:23 +00:00
class-wp-textdomain-registry.php I18N: Improve docblocks after [57337]. 2024-01-24 07:57:14 +00:00
class-wp-theme-json-data.php Coding Standards: Remove superfluous blank lines at the end of various classes. 2023-09-08 09:32:23 +00:00
class-wp-theme-json-resolver.php Editor: Allow default duotone styles if not explicitly disabled in theme.json. 2024-01-10 00:27:15 +00:00
class-wp-theme-json-schema.php Coding Standards: Remove redundant ignore annotations, take 5. 2023-10-02 11:27:24 +00:00
class-wp-theme-json.php Editor: Unset reference used in foreach statement. 2024-01-23 17:11:11 +00:00
class-wp-theme.php Themes: Make caches for block patterns clearable. 2023-10-20 19:08:21 +00:00
class-wp-user-meta-session-tokens.php
class-wp-user-query.php Code Modernization: Use wp_trigger_error() in WP_User_Query magic methods. 2023-09-07 20:45:16 +00:00
class-wp-user-request.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-user.php Docs: Document the `$wpdb` global in `WP_User::__construct()`. 2023-12-15 12:37:29 +00:00
class-wp-walker.php Coding Standards: Use pre-increment/decrement for stand-alone statements. 2023-09-09 09:28:26 +00:00
class-wp-widget-factory.php Code Modernization: Add `AllowDynamicProperties` attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-widget.php Coding Standards: Use strict comparison in `wp-includes/class-wp-widget.php`. 2023-08-25 01:28:16 +00:00
class-wp-xmlrpc-server.php XML-RPC: Add `alt` attribute value to media item API. 2023-09-20 19:31:20 +00:00
class-wp.php Coding Standards: Bring more consistency to `Last-Modified` and `ETag` checks. 2023-08-13 10:31:23 +00:00
class-wpdb.php Docs: Replace "sanity" with "confidence" for inclusive language. 2024-01-03 21:59:19 +00:00
class.wp-dependencies.php Coding Standards: Rename WordPress Dependencies API class files. 2022-09-20 14:17:12 +00:00
class.wp-scripts.php Coding Standards: Rename WordPress Dependencies API class files. 2022-09-20 14:17:12 +00:00
class.wp-styles.php Coding Standards: Rename WordPress Dependencies API class files. 2022-09-20 14:17:12 +00:00
comment-template.php Script Loader: Use `wp_get_script_tag()` and `wp_get_inline_script_tag()`/`wp_print_inline_script_tag()` helper functions to output scripts on the frontend and login screen. 2023-09-25 21:05:21 +00:00
comment.php Comments: Improve WP_Comment_Query count query performance by setting 'order by' to 'none'. 2023-09-29 17:13:24 +00:00
compat.php I18N: Introduce a more performant localization library. 2024-01-23 13:34:11 +00:00
cron.php Docs: Replace "sanity" with "confidence" for inclusive language. 2024-01-03 21:59:19 +00:00
date.php General: Use `WPINC` as a shorter reference to `wp-includes` in some files. 2022-06-17 11:20:13 +00:00
default-constants.php Bundled Themes: Twenty Twenty-Four is now the default theme. 2023-09-26 17:33:20 +00:00
default-filters.php Embeds: Ensure the deprecated function `print_emoji_styles` isn't used 2024-01-17 21:36:16 +00:00
default-widgets.php
deprecated.php Bootstrap/Load: Introduce functions to check whether WordPress is serving a REST API request. 2024-01-19 17:40:09 +00:00
embed-template.php General: Use `WPINC` as a shorter reference to `wp-includes` in some files. 2022-06-17 11:20:13 +00:00
embed.php Script Loader: Replace hardcoded output of style tags with calls to `wp_add_inline_style`. 2023-09-25 17:06:34 +00:00
error-protection.php Code Modernization: Replace usage of `strpos()` with `str_starts_with()`. 2023-05-02 15:45:22 +00:00
feed-atom-comments.php Coding Standards: Use strict comparison in `wp-includes/feed-atom-comments.php`. 2023-07-29 00:31:35 +00:00
feed-atom.php
feed-rdf.php
feed-rss.php
feed-rss2-comments.php Coding Standards: Rename `$comment_ID` variable to `$comment_id` in various files. 2023-02-12 18:08:21 +00:00
feed-rss2.php
feed.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:48:22 +00:00
fonts.php Fonts: Fix font_style typo in wp_print_font_faces(). 2024-01-03 22:13:18 +00:00
formatting.php Docs: Fix var types of parameters in `sanitize_option()` and `sanitize_option_{$option}`. 2024-01-17 09:09:15 +00:00
functions.php I18N: Introduce a more performant localization library. 2024-01-23 13:34:11 +00:00
functions.wp-scripts.php Docs: Correct some docblock formatting errors. 2023-11-01 15:10:20 +00:00
functions.wp-styles.php Docs: Use third-person singular verbs for Script Loader related function descriptions, as per docblocks standards. 2023-01-15 14:57:13 +00:00
general-template.php General: Avoid early initialization of variable in `get_bloginfo()`. 2023-12-07 22:57:28 +00:00
global-styles-and-settings.php Docs: Fix several typos in inline comments. 2024-01-18 22:13:16 +00:00
http.php Coding Standards: Use `instanceof` keyword instead of the `is_a()` function. 2023-08-03 12:10:28 +00:00
https-detection.php Security: remove the cron event that checked for https support. 2023-09-22 19:08:19 +00:00
https-migration.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:38:25 +00:00
kses.php KSES: Add `background-repeat` to the list of safe CSS properties. 2023-12-26 14:24:21 +00:00
l10n.php I18N: Improve edge case handling in `WP_Translation_Controller`. 2024-01-23 15:15:14 +00:00
link-template.php Posts, Post Types: Don't force trailing slash in `get_pagenum_link()`. 2023-10-16 00:07:26 +00:00
load.php Bootstrap/Load: Introduce functions to check whether WordPress is serving a REST API request. 2024-01-19 17:40:09 +00:00
locale.php
media-template.php Media: Change link text when attachment pages disabled. 2023-09-26 14:45:23 +00:00
media.php Media: Consider inline image CSS width to backfill `width` and `height` attributes. 2024-01-16 17:03:13 +00:00
meta.php Revisions: framework for storing post meta revisions. 2023-09-26 15:32:19 +00:00
ms-blogs.php Themes: Remove memoization from stylesheet and theme directories. 2023-11-20 22:29:24 +00:00
ms-default-constants.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
ms-default-filters.php Posts, Post Types: Pass the post object to `_update_posts_count_on_delete()`. 2023-02-24 01:23:20 +00:00
ms-deprecated.php Code Modernization: Replace usage of `substr()` with `str_starts_with()` and `str_ends_with()`. 2023-06-22 14:57:24 +00:00
ms-files.php Coding Standards: Use strict comparison in `wp-includes/ms-files.php`. 2023-08-23 15:53:24 +00:00
ms-functions.php Docs: Replace miscellaneous incorrect PHPDoc tags. 2023-11-13 11:13:27 +00:00
ms-load.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
ms-network.php Cache API: Add helper function `wp_cache_set_last_changed`. 2023-05-02 11:26:24 +00:00
ms-settings.php Code Modernization: Replace usage of `substr()` with `str_starts_with()` and `str_ends_with()`. 2023-06-22 14:57:24 +00:00
ms-site.php Coding Standards: Use pre-increment/decrement for stand-alone statements. 2023-09-09 09:28:26 +00:00
nav-menu-template.php Docs: Remove a trailing period from a URL in a `@see` tag. 2024-01-01 14:17:16 +00:00
nav-menu.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
option.php Docs: Use typed array notation for the `$options` parameter in some new functions. 2023-11-14 12:44:27 +00:00
pluggable-deprecated.php
pluggable.php Docs: Document the `$wp_hasher` global in `wp_generate_user_request_key()`. 2023-12-24 13:05:21 +00:00
plugin.php Docs: Mark `apply_filters()` third parameter `$args` as optional. 2023-06-08 07:54:22 +00:00
post-formats.php Docs: Document default values for optional parameters in various DocBlocks. 2023-02-21 16:39:19 +00:00
post-template.php Posts, Post Types: Remove redundant function calls in `get_body_class()`. 2023-08-22 12:30:29 +00:00
post-thumbnail-template.php Media: Introduce `wp_get_attachment_image_context` filter. 2023-05-17 18:31:24 +00:00
post.php Media: Fix inaccurate docs for `wp_attachment_is()`. 2024-01-12 16:49:16 +00:00
query.php Docs: Wrap inline `@see` tags in curly braces. 2023-08-24 09:01:16 +00:00
registration-functions.php
registration.php
rest-api.php Bootstrap/Load: Introduce functions to check whether WordPress is serving a REST API request. 2024-01-19 17:40:09 +00:00
revision.php Docs: Improve documentation for meta revision functions. 2023-10-23 13:17:22 +00:00
rewrite.php Coding Standards: Use strict comparison in `wp-includes/rewrite.php`. 2023-07-11 11:15:27 +00:00
robots-template.php Docs: Adjust DocBlock formatting for `wp_robots_*()` and related functions. 2022-04-06 15:33:03 +00:00
rss-functions.php
rss.php Docs: Fix a typo in `wp-includes/rss.php` inline comments. 2023-04-10 19:31:18 +00:00
script-loader.php Script Loader: Only emit CDATA wrapper comments in `wp_get_inline_script_tag()` for JavaScript. 2024-01-23 17:56:12 +00:00
script-modules.php Script Modules API: Rename `wp_module` to `wp_script_module` 2024-01-23 03:34:14 +00:00
session.php
shortcodes.php Docs: Replace "sanity" with "confidence" for inclusive language. 2024-01-03 21:59:19 +00:00
sitemaps.php
spl-autoload-compat.php
style-engine.php Editor: disable default style engine optimisation. 2023-09-14 04:56:21 +00:00
taxonomy.php Editor: Fix back to items label capitalization for the pattern categories. 2024-01-23 10:10:18 +00:00
template-canvas.php Coding Standards: Remove redundant ignore annotations, take 4. 2023-10-01 00:22:27 +00:00
template-loader.php
template.php Docs: Remove unused `$posts` global reference in `get_attachment_template()`. 2023-12-22 14:52:21 +00:00
theme-i18n.json Editor: Introduce spacing presets in global style properties. 2022-09-21 11:43:13 +00:00
theme-previews.php Themes: fix documentation link. 2023-12-08 06:32:24 +00:00
theme-templates.php Script Loader: Enqueue inline style for block template skip link in head instead of footer. 2023-10-13 17:21:22 +00:00
theme.json General: Add $schema property to block and theme JSON files. 2024-01-23 13:07:16 +00:00
theme.php Docs: Add a mention of `appearance-tools` as a possible value for `add_theme_support()`. 2024-01-09 11:41:18 +00:00
update.php Coding Standards: Include one space after `function` keyword for closures. 2023-09-12 15:23:18 +00:00
user.php Bootstrap/Load: Introduce functions to check whether WordPress is serving a REST API request. 2024-01-19 17:40:09 +00:00
vars.php General: Account for `Sec-CH-UA-Mobile` client hint request header in `wp_is_mobile()`. 2023-09-20 20:51:19 +00:00
version.php HTML API: Scan all syntax tokens in a document, read modifiable text. 2024-01-24 23:37:16 +00:00
widgets.php Docs: Document the `$wp_registered_sidebars` global in `wp_map_sidebars_widgets()`. 2023-12-31 13:34:20 +00:00
wp-db.php Coding Standards: Use `__DIR__` instead of `ABSPATH` in `wp-db.php`. 2022-07-21 22:45:11 +00:00
wp-diff.php