Week in Core, July 26 – August 2, 2016

Welcome back the latest issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., covering changes [38160-38180]. Here are the highlights:

  • 20 commits
  • 17 contributors
  • 69 tickets created
  • 4 tickets reopened
  • 38 tickets closed

Ticketticket Created for both bug reports and feature development on the bug tracker. numbers based on trac timeline for the period above. The following is a summary of commits, organized by component.

Code Changes

Build/Test Tools

  • Add npm-shrinkwrap.json to 4.5. By shrinkwraping our dependencies, the same versions of everything will be installed no matter what rules the dependency package.json has specified. [38177] #37541

Bundled Themes

Customize

  • Prevent customize-preview-widgets JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. errors in preview if a sidebarSidebar A 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. is registered with empty before_widget/after_widget params. [38166] #37478

Emoji

  • Add support for the Rainbow and Pirate flag emoji. Twemoji recently added images for the Rainbow and Pirate flags, and the latest iOSiOS The operating system used on iPhones and iPads. 10 betaBeta A 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. added support for the Rainbow flag. Never let it be said that WordPress is at anything less than the cutting edge of emoji research and development. Merge of [38179] to the 4.6 branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch".. [38180] #37543
  • Add support for the Rainbow and Pirate flag emoji. Twemoji recently added images for the Rainbow and Pirate flags, and the latest iOS 10 beta added support for the Rainbow flag. Never let it be said that WordPress is at anything less than the cutting edge of emoji research and development. [38179] #37543

Filesystem APIAPI An 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.

  • Output buffering for request_filesystem_credentials() should wrap the function directly. [38167] #37488

HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. API

  • Set $use_authentication property of Requests_Proxy_HTTP to true when proxy authentication is required. [38173] #37494
  • All non-GET/HEAD requests should put the arguments in the form body. [38165] #37456
  • Normalize cookies before passing them to Requests. [38164] #37437
  • Bump version of Requests to 1.7. [38163] #33055

I18Ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.

  • After [38077], merge two duplicate strings in wp_insert_term() and wp_update_term(). [38162] #18218

Plugins

  • Use install_plugins_upload action to print the upload form. [38172] #37495
  • Move capability checks further up in wp_ajax_update_plugin() and wp_ajax_delete_plugin(). [38168] #37490

Script Loader

  • Ignore deregistered dependencies in wp_dependencies_unique_hosts(). [38174] #37502
  • Script Loader: Clarify documentation of wp_resource_hints hook. [38161] #37458

Upgrade/Install

Misc

  • Trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. is now 4.7-alpha. [38178]
  • Branch 4.6 [38176]
  • Post WordPress 4.6 RC 1 version bump. [38170]
  • WordPress 4.6 RC 1. [38169]

Props

Thanks to @davidakennedy, @DavidAnderson, @dd32, @dimadin, @francescobagnoli, @helen, @jorbin, @Koster, @ocean90, @pento, @peterwilsoncc, @ramiy, @SergeyBiryukov, @swissspidy, @westonruter, and @Yorick for their contributions!

#4-6, #week-in-core

This Week in 4.6: August 1 – 7

This is the jump-start post for the fifteenth week of the WordPress 4.6 release cycle. T minus 16 days until release day. ⏳

The second release candidaterelease candidate One 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). will land on Wednesday at 18:00 UTC. Our target until then is to get the ticketticket Created for both bug reports and feature development on the bug tracker. count in the 4.6 milestone down to 0. To hit this goal we have to work on 6 tickets.

Priority tickets this week:

  • Shiny Updates
    • #37531: PluginPlugin A 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 installation failure not reflected in the UIUI User interface (needs-owner, needs-patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing.)
    • #37504: Update message displays unstyled in plugins list (needs-owner, needs-testing)
    • #37514: Remove/enhance console.error() calls (needs-owner, needs-refresh)
  • Customize
    • #36795: AccessibilityAccessibility Accessibility (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) improvements for new menu edit flow (needs-testing, needs-sign-off)
  • HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. APIAPI An 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.
    • #37503: Requests doesn’t pass through custom methods in cURL transport (needs-testing, needs-dev-feedback)
  • About Page
    • #37246: Commit first pass to trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. (needs-refresh)

Meetings this week:

Bug Scrubs

Weekly Chats

Notable updates from last week

#4-6, #jump-starts

Editor changes in 4.6

In WordPress 4.6 TinyMCE is upgraded from version 4.3.10 to 4.4.1. There are numerous bugbug A 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. fixes and several new features, most notably a new inline theme (changelog).

The wpview editor pluginPlugin A 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 (that is responsible for showing gallery, video, audio, and oEmbed previews) was updated to use the TinyMCE APIAPI An 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. for non-editable elements. This brought some small changes and improvements in the UIUI User interface, for example “views” are draggable now. On the back-end the wp-mce-view-unbind event was removed as it doesn’t exist in the API. It was intended for cleanup/unloading but was never very reliable. If a plugin needs to unload instance dependent scripts, it can use mutation observer to monitor when the view node is deleted. See #36434 for more information.

wpview remains an experimental API, though with each iteration it is getting closer to being finalized. As an experimental API, breaking changes are expected. As always, please test your plugin now if it modifies or depends on the editor, especially if you use experimental features like wpview.

#4-6, #dev-notes, #editor, #media, #tinymce

Week in Core, July 19 – July 26 2016

Welcome back the latest issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., covering changes [38111-38160]. Here are the highlights:

  • 49 commits
  • 35 contributors
  • 73 tickets created
  • 4 tickets reopened
  • 67 tickets closed

Ticketticket Created for both bug reports and feature development on the bug tracker. numbers based on trac timeline for the period above. The following is a summary of commits, organized by component.

Code Changes

Administration

  • System fonts: Adjust the smaller tabs so they appear as tabs. [38153] #36753
  • System fonts: Don’t quote single-word font names, per our coding standards. [38152] #36753

Build/Test Tools

Comments

  • Introduce the cache_domain argument for WP_Comment_Query to allow caching to a unique set of cache buckets. [38117] #37419
  • Tests: Include the check_comment function tests in the comment group. Adds @group comment notation to the Tests_Comment_CheckComment class. Introduced in [32519]. [38114] #37356

Cron APIAPI An 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.

  • Docs: In wp_schedule_single_event(), add a note about scheduling an event to occur within 10 minutes of another event with the same action hook. [38148] #37455

Database

  • Replace incorrect use of E_USER_NOTICE in wpdb::_real_escape() with the version number where the message was added. [38133] #36403

Editor

  • Inline link: Remove proxying through WordPress to test if an URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org exists. Fix and enhance the regex that tests if the URL is well formed. [38159] #36638
  • Improve styling of “Add Media” button on mobile and make it more consistent with media buttons added by plugins. [38132] #36999
  • Link check: Use wp.a11y.speak() to announce bad URLs. Do not add a title to the link toolbar. Better error message. [38126] #36638

Feeds

  • Docs: Add missing class, method, and property DocBlocks for feed classes. [38112] #36295

Filesystem API

  • Filesystem API: Change the default value for the $context parameter of get_filesystem_method() and request_filesystem_credentials() to an empty string. [38138] #37412

General

  • Docs: Fix typo in hook description for customize_save_validation_before. [38140] #37318
  • Docs: Fix formatting, tense, verb conjugation, and other syntax for wp-includes/* elements introduced or changed in 4.6. [38121] [38125] #37318
  • Docs: Add missing inline documentation in WP_HTTP_Requests_Response. [38120] #37318, #33055

Media

  • I18Ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.: Add a translator comment for two MediaElement.js strings added in [38089]. [38150] #37453, #37394
  • Docs: Fix minor formatting issue for a comment added in [38113]. [38139] #32171
  • Ensure empty alt attributes are set to blank strings. [38116] #36735
  • Remove global import for $content_width in _wp_post_thumbnail_html(). $content_width is unused since [35023]. [38136] #28512
  • Clean up prior image edits if IMAGE_EDIT_OVERWRITE is true. [38113] #32171
  • Docs: Update the description of the $box argument of wp_nav_menu_item_taxonomy_meta_box() for consistency with [38129]. Missed in [38130]. [38142] #37211
  • Docs: In metaMeta Meta 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. box functions, clarify that “Meta box ID” refers to the id attribute of the meta box and not a numeric ID. [38131] #37211
  • Docs: Correct and expand the docs for the $taxonomy argument of wp_nav_menu_item_taxonomy_meta_box(). [38128] #37211
  • Docs: Correct and expand the docs for the $post_type argument of wp_nav_menu_item_post_type_meta_box(). [38127] #37211
  • In wp_nav_menu_item_taxonomy_meta_box(): Rename the $taxonomy parameter to $box for clarity and consistency with other meta box functions. [38130] #37211
  • In wp_nav_menu_item_post_type_meta_box(): Rename the $post_type parameter to $box for clarity and consistency with other meta box functions. [38129] #37211
  • In get_page_uri(), don’t prepend a parent page slug if it’s empty. [38145] #36174

Plugins

  • Use history.pushState() to customize the URL during searches. history.pushState() requires an event handler for popstate which doesn’t exist (yet). [38154] #37233
  • Add a missing space between classes on “ element for custom columns of the Plugins list table. [38149] #37460
  • List Table: Improve WP_Plugins_List_Table::search_box() which was added in [38033]. [38146] #37230
  • Improve Ajax search of new plugins. [38119] #37233
  • AccessibilityAccessibility Accessibility (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): Ensure only text is sent to aria-live messages. [38115] #37382
  • Make search field placeholder translatable. [38141] #37230

Posts, Post Types

  • Remove a redundant function_exists( 'mb_strlen' ) check in get_sample_permalink_html(). mb_strlen() is always available since [32114]. [38147] #30633
  • Unit Tests: Add a @ticket reference for test_get_page_uri_without_argument(). [38144] #26284
  • Unit Tests: Move get_page_uri() tests to post/getPageUri.php, added in [37345]. [38143] #26284

Post Thumbnails

  • Remove an unused nonce in _wp_post_thumbnail_html(). [38137] #12922
  • Only update featured images when saving a post. [38118] #12922

Script Loader

Themes

  • Docs: Fix typo in wp_title() description. [38135] #37442
  • Docs: Change type of WP_Upgrader_Skin::$result to string|bool|WP_Error. [38134] #32246

TinyMCE

  • Fix the calculation for the inline toolbar vertical position. [38160] #37481
  • wpView:
  • Add the wpview-wrap class and pass third param to the getNodes() callback for back-compat.
  • Attach the mutation observer that resizes a view iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser. inside the iframe to minimize memory use/leaks.
  • Remove the wp-mce-view-unbind event. It has never been particularly reliable and now it doesn’t fire when the user deletes a view by typing or pasting over it.
  • Restore changing of a view iframe body classes when the editor body classes change. [38158] #36434
  • TinyMCE, wpView: bail early when the iframe node is not attached to the DOM. We can’t load any HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. in it as here is no iframe.contentWindow in these cases. [38157] #36434
  • Fix selecting an image on touch in iOSiOS The operating system used on iPhones and iPads. Safari for TinyMCE 4.4.1. [38156] #37427
  • Upgrade to 4.4.1, changelog: https://www.tinymce.com/docs/changelog/#version441-july262016. [38155] #37427, #37476

Upgrade/Install

  • Prevent an endless self-calling loopLoop The 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. in wp_tempnam(). [38151] #33999

Thanks to @adamsilverstein, @afercia, @afineman, @andizer, @azaozz, @bradt, @Chouby, @chriscct7, @crstauf, @DrewAPicture, @flixos90, @FolioVision, @gma992, @helen, @ideag, @inderpreet99, @iseulde, @ixkaito, @joemcgill, @jorbin, @medariox, @mehulkaklotar for initial patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing., @mikeschroder, @netweb, @ocean9, @ocean90, @pento, @peterwilsoncc, @rachelbaker, @rahulsprajapati, @rahulsprajapati for initial patch, @ramiy, @SergeyBiryukov, @stevenkword, and @swissspidy for their contributions!

#4-6, #week-in-core

Dev Chat Summary: July 27, 2016

WordPress 4.6 Release Candidaterelease candidate One 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)., announcements and our next steps

WordPress 4.6 Release Candidate 1 was made available for testing today. If you have any plugins or themes, please starting testing them against WordPress 4.6.

As always, Release Candidate availability also means there is a string freeze in place and all commits must be reviewed by two or more permanent committers and made by a permanent committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component.. No exceptions. Guest committers can commit to unit tests at any time.

There are currently 2 tickets in https://core.trac.wordpress.org/report/6. These and any future tickets shouldn’t be open for longer than 24 hours.

https://wordpress.org/news/2016/07/wordpress-4-6-release-candidate/

About page

Unfortunately, the About page wasn’t able to be committed to trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. prior to RC1, but @hugobaeta has been working hard to get it ready. You can see a draft here: https://cloudup.com/cDgw_UvCluc

WordPress 4.6 still needs a tagline. What should a tagline cover?

  • What do you think people will be the most excited about?
  • What would actually make you keep reading an about page and possibly feel excited to go try something out?

Much discussion happened during the meeting. You can read the conversation and suggested tag lines starting here: https://wordpress.slack.com/archives/core/p1469651308001266

Component announcements/updates

  • TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. issues are hopefully fixed.
  • To improve the review workflow during RC @ocean90 is looking into a fix which currently prevents us from branching earlier.

Open discussion

#29204 was brought up, but its unfortunately to late to be resolved in the 4.6 release cycle.

 

Full meeting logs can be found here: https://wordpress.slack.com/archives/core/p1469649667001211

#4-6, #dev-chat, #summary

Weekly Dev Chat Agenda for July 27 — Fourteen Weeks Later

Agenda for the weekly dev meeting on July 27, 2016 at 20:00 UTC:

  • WordPress 4.6 Release Candidaterelease candidate One 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)., announcements and our next steps
  • About page
  • Component announcements/updates
  • Open discussion

If you have anything to propose to add to the agenda, please leave a comment below.

See you in the chat!

#4-6, #agenda, #dev-chat

Dev Chat Summary: July 20, 2016

WordPress 4.6 BetaBeta A 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. 4 and current progress

Beta 4, the last beta before RC1, was released today. Please test and report all bugs you encounter on Trac.
There are still 9 open tickets that should be closed by RC1 next week. https://core.trac.wordpress.org/report/5

Dev notesdev note Each 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 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., field guideField guide The field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page., email to pluginPlugin A 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 authors, 4.6 OMGWTFBBQ Draft Post

  • @jorbin started outlining/drafting the field guide and will have a first draft in the next 24 hours for committers to review.
  • The email to plugin authors will be sent in conjunction with the release of RC1.
  • The 4.6 OMGWTFBBQ Draft Post is a post by the support team. You can find it here: https://make.wordpress.org/support/2016/07/4-6-omgwtfbbq-draft-post/. The support team especially appreciate suggestions for the “Not a Bug” section (these are items which are intentional changes, but may seem like a bugbug A 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. or glitch to users offhand, like Dashboard fonts being different).

About page

Feature Pointers

There are no feature pointers planned for 4.6. If your feature is planning on using a feature pointers, please consider if you really need to.

Let’s find a tagline.

The brainstorming document can be found here. There are a few suggestions for a tagline already, but please add them to the doc. Please keep it serious.

Project updates

register_meta()

@jeremyfelt published an updated dev notedev note Each 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 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. for the recent change (https://make.wordpress.org/core/2016/07/20/additional-register_meta-changes-in-4-6/). It was shipped with beta 4 and also announced in the release post.

Font Natively

There are currently some alignment issues related to line-height. These will continue to be worked on as needed. Please report any other issues you may run into.

Component announcements/updates

None.

Open discussion

None.

 

You can read the full chat logs here: https://wordpress.slack.com/archives/core/p1469044867000364

#4-6, #dev-chat, #summary

HTTP API in 4.6

For WordPress 4.6, the HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. APIAPI An 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. (wp_remote_request() and family) have undergone a large internal change. Rather than using a WordPress-specific HTTP library, WordPress now uses the open-source independent Requests library, developed by yours truly.

Why Requests?

The WP_HTTP library in previous releases has been primarily maintained by myself and @dd32, with my support time split between the two libraries. Both libraries are very similar, and code has been shared between them (when licensing permitted) in the past. Requests follows the same development philosophies as WordPress: developing for the masses with broad PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher support, and maintaining backwards compatibility.

By switching to Requests, a library without any WordPress-specific dependencies, WordPress benefits from input from the wider PHP ecosystem and community

Requests also has a huge number of unit tests, with test coverage at 92% of the codebase and increasing. It’s also used by other projects via the Composer ecosystem, including wp-cliWP-CLI WP-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/’s HTTP functionality.

What has changed?

From your perspective as a developer, nothing should have changed visibly. You can and should continue to use WP’s HTTP functions the way you always have.

(Note: For the 4.6 development cycle and betaBeta A 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. 1, the HTTP functions returned an array-like object. Many plugins and themes in the real world are using direct is_array() checks, so it was decided to pull this functionality back a bit to be safe, see #37097.)

Some new functionality has been introduced. In particular, the array returned from wp_remote_request() now includes a new http_response value, which contains a WP_HTTP_Response object (technically, WP_HTTP_Requests_Response). This shares functionality with WP_REST_Response objects introduced in WordPress 4.4, allowing common functionality to be developed for both APIs. In future releases, WordPress may introduce new WP_HTTP_Request objects as well, allowing common middleware to be used across both APIs.

In addition, all of Requests’ features are now available in WordPress. This includes things like better HTTP standard support, case-insensitive headers, parallel HTTP requests, support for Internationalized Domain Names (like böcean901.ch), and many other internal improvements.

Some new features are only available when using Requests::request() directly (such as parallel requests), however, these will be introduced into new WordPress-specific APIs in future releases (#37459). This release is focussing on switching internal implementation and remaining stable.

For more background on the change, see #33055.

#4-6, #dev-notes, #http-api

WordPress 4.6 Field Guide

Many of the changes in the forthcoming WordPress 4.6 are developer-focused changes that take place under the hood. Please remember to test your plugins, themes, and sites with WordPress 4.6 before the release. An hour of testing today can save you days of anguish later.

Enhanced MetaMeta Meta 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. Registration

register_meta() is getting some updates to enable greater flexibility and features in the future (such as inclusion in the Rest APIREST API The 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/.). Until now, register_meta() took four arguments. In WordPress 4.6, this will decrease to 3, with the third one being an array of arguments. When register_meta() is used with the old signature in WordPress 4.6, it will continue to function but will now return false. Please read the initial post outlining why register_meta() has been updated and the followup detailing further enhancements.

Persistent Comment Cache

Since WordPress 2.6, the comments APIAPI An 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. has purposefully not used a persistent cache. Over the past 20 releases, changes have been made to purge the problems from the comments API that caused this. If you have a pluginPlugin A 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 which modifies comment data directly please change them to make use of the various comment API functions or use clean_comment_cache(). You can hit this changes announcement for more info.

New Object: WP_Post_Type

Rather than a standard object, there is now a WP_Post_Type for each registered post type. Three functions and three actions have been changed to use this new object. WP_Post_Type provides methods to handle post type supports, rewrite rules, meta boxes, hooksHooks In 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., and taxonomies.

🛫 Open Sans, 🛬 Native Fonts

With the continued evolution of system fonts allowing for all devices to have a beautiful looking adminadmin (and super admin), WordPress 4.6 updates the font stack. To keep your custom admin pages looking consistent with the rest of the WordPress admin, you are encouraged to audit your CSSCSS Cascading Style Sheets.. The new font stack is:

font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;

When using this font stack, it must be called using the font-family property, and not the font shorthand. This works around an issue in Microsoft Edge. Additionally, the only font weights used in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. now are 400 for general text and 600 for heavier text.

Shiny Updates

One of the user-facing features in 4.6 is an update to Shiny Updates, first introduced in 4.2. For developers, the change to pay attention to is that the JavaScriptJavaScript JavaScript 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/. under the updates handle has been refactored and updated to support plugins and themes. If you are dependent on that handle, make sure to read about the shiny updates changes.

Resource Hints in 4.6

Resource Hints is a rather new W3C specification that “defines the dns-prefetch, preconnect, prefetch, and prerender relationships of the HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. Link Element (<link>)”. These can be used to assist the browser in the decision process of which origins it should connect to, and which resources it should fetch and preprocess to improve page performance.

In 4.6, WordPress adds an API to register and use resource hints. The relevant ticketticket Created for both bug reports and feature development on the bug tracker. is #34292.

Developers can use the wp_resource_hints filterFilter Filters 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. to add custom domains and URLs for dns-prefetchpreconnect, prefetch or prerender. One needs to be careful to not add too many resource hints as they could quite easily negatively impact performance, especially on mobile.

WP_Term_Query

WordPress 4.6 will introduce WP_Term_Query. This new class brings parity between taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. term queries and WP’s other content type queries: WP_Query, WP_Comment_Query, and WP_User_Query. And – as in the case of posts, comments, and users – the get_terms() function has been converted to a wrapper for the new WP_Term_Query.

Internationalization

Everyone should be able to use WordPress in the language they want. WordPress 4.6 makes a number of changes to assist with internationalization and localization. Some of the highlights include:

  • Just-in-time loading for translations. You do not have to call load_plugin_textdomain() or load_theme_textdomain() anymore (if you distribute your theme/plugin via wordpress.orgWordPress.org The 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/).
  • Community translations are now favored over translations which are included in your theme/plugin.
  • Localized jQuery UI datepicker.
  • Support for comment number declension in get_comments_number_text(). See #13651.
  • Fallback for TextDomain headerHeader The 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. field in get_plugin_data(). See #36706.
  • Updated list of continents and cities for the timezone selector. See #37554.
  • Support for the German (Switzerland) localeLocale A locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). Other examples of locales include Canadian English and U.S. English. in remove_accents(). See #37076.
  • Improved support for month name declension. See #36790.

Pre-instantiated Widget Registration in 4.6

Since WP_Widget was introduced in 2.8 the register_widget() and unregister_widget() functions required the class name (string) of a WP_Widget subclass to be supplied. As of 4.6 these functions also accept a class instance (object) of a WP_Widget subclass as well. See #28216.

Two key benefits of allowing objects to be instantiated are:

  1. Widgets can now be instantiated and registered with constructor dependency injection.
  2. New widgetWidget A 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. types can now be added dynamically, such as adding a Recent Posts widget for each post type, per #35990.

New and Improved CustomizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings. APIs

The customizer has four major changes in WordPress 4.6. The most prominent is a new collection of APIs for validation of setting values. Included in this new notifications API for the customizer.

Additional changes include some CSS cleanup. Custom controls that use part of the core UIUI User interface and subclass WP_Customize_Media_Control no longer need to create their own CSS styles that duplicate core rules. Because the markup and styling have changed significantly, please test any custom controls, CSS, or JavaScript that is related to media controls in the customizer.

If your code uses the customizer, you are encouraged to review the changes.

Bootstrap/Load Updates in 4.6

Alert: A late change was made to <a href=”https://make.wordpress.org/core/2016/08/13/global-overloading-in-advanced-cache-php/”>remove protection for overloading Plugin API related global variables</a> in <code>advanced-cache.php</code>

Every time WordPress is loaded, it goes through the bootstrap or loading process. In WordPress 4.6, there will be a few changes to the process focused on making pieces available earlier. Many of these changes will have no effect whatsoever on the vast majority of WordPress sites. However, if you are the type that maintains your own advanced-cache.php drop-in, host/run large profile sites, or work on tools that bootstrap WordPress is odd ways, you need to know about the following changes:

  • Load plugin.php earlier in wp-settings.php
  • is_ssl() is now located in wp-includes/load.php
  • ABSPATH can now be safely defined before WordPress is loaded

Multisite Focused Changes

This release, work continues on multisite with a focus on improved APIs and performance. Some highlights include:

  • New WP_Site_Query and WP_Network_Query classes to query sites and networks in a standardized way.
  • Enhancements to WP_Site and WP_Network objects including lazy-loading for site details.
  • A new helper function get_current_network_id() to find the current network’s ID.
  • wp_get_sites() has been deprecated. get_site(), get_sites(), get_network(), and get_networks() are the future.

External Library Updates

  • Masonry was updated to version 3.3.2 from version 3.1.4.
  • imagesLoaded was updated to version 3.2.0 from version 3.1.4.
  • imagesLoaded can now be enqueued without Masonry being enqueued. For backward compatibility reasons, imagesLoaded remains a dependency for Masonry.
  • MediaElement.js was updated to version 2.22.0 from version 2.18.1.
  • TinyMCE was updated to version 4.4.1 from version 4.3.10.
  • Backbone.js was updated to version 1.3.3 from 1.2.3.

Summaries for each of these updates and links to full changelogs are available.

But Wait! There’s More!

Over 280 bugs, 125 enhancements, 7 feature requests, and 18 blessed tasks have been marked as fixed in WordPress 4.6. Some additional ones include:

Please, test your code. Fixing issues now, before the release, helps you and helps millions of WordPress sites.

#4-6, #dev-notes, #field-guide

This Week in 4.6: July 25 – 31

This is the jump-start post for the fourteenth week of the WordPress 4.6 release cycle.

The first release candidaterelease candidate One 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). will land on Wednesday at 18:00 UTC. Our target until then is to get the ticketticket Created for both bug reports and feature development on the bug tracker. count in the 4.6 milestone down to 0. To hit this goal we have to work on 10 tickets. The release candidate will also mark a soft string freeze. Now is a good time to review some of the string changes in 4.6 and/or to check whether help texts are still accurate.

Priority tickets this week:

  • General
    • #36753 Native Fonts (needs-patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing.)
    • #37458 Resource Hints: improve filtering (needs-patch)
    • #37246 4.6 About Page (needs-patch)
  • Editor
    • #36638 Detect broken URLs in the editor (needs-testing)
    • #36434 Consider TinyMCE’s implementation of contenteditable="false" for views (needs-testing)
    • #37427 wpView not working well in IE and iOSiOS The operating system used on iPhones and iPads. Safari (needs-testing)
  • HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. APIAPI An 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.
    • #37456 HTTP API regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. in transmitted content and headers (has-patch)
    • #37437 Requests_Cookie::parse() unable to parse WP_Http_Cookie object coming from WP_Http::request() (has-patch)
  • Plugins
    • #37233 Shiny Updates: “Add New PluginPlugin A 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” shiny search issues (needs-patch, needs-testing)
  • Bundled Themes
    • #37426 Prepare bundled themes for 4.6 (needs-patch, needs-testing)

Meetings this week:

Bug Scrubs

Weekly Chats

Notable updates from last week

#4-6, #jump-starts