HHVM no longer part of WordPress core’s testing infrastructure

WordPress has never officially supported HHVM, but since WordPress 4.0 it has been compatible, largely thanks to the efforts of @wonderboymusic in #27881 and other tickets.

Many large scale sites which switched to HHVM around 2014 have since switched to PHP 7, and usage numbers of HHVM according to the wordpress.org update statistics indicate that HHVM powers only several dozen WordPress websites as of April 2017.

Core’s unit test suite when run on HHVM never actually passed (this may not be completely accurate, memories are hazy), often errored completely, and was always marked as an allowed failure. All of this, coupled with the disproportionately high amount of effort required to maintain the test and CI infrastructure for HHVM, means that WordPress core is no longer tested on HHVM as part of the Travis CI build. See #40548 for details.

If you’re running a WordPress website on HHVM, you should consider switching to PHP 7+ which is far more widely supported and tested, and offers all of the memory and performance benefits that HHVM pushed forward.

Editor changes in 4.8

There are couple of noteworthy changes to the editor in WordPress 4.8.

A much better experience when trying to place the cursor around links. Try inserting a link, then move the cursor with the left and right arrow keys. You can clearly see when it is inside the link element and when it is before or after it.

Following the earlier announcement, support for Internet Explorer 8, 9, and 10 has been removed from the editor.

As always there have been a lot of improvements and bug fixes, upstream in TinyMCE, and in core.

#4-8, #editor

Dev Chat Agenda for May 24th (4.8 week 4)

This is the agenda for the weekly dev meeting on May 24, 2017 at 20:00 UTC:

If you have anything to propose to add to the agenda or specific items related to the above, please leave a comment below. See you there!

#4-8, #agenda, #dev-chat

Multisite Focused Changes in 4.8

Here’s an overview of the developer facing changes made in multisite for the 4.8 cycle. If you’re interested in more detail, checkout the full list of tickets.

New capabilities

As part of the goal to remove all calls to is_super_admin() in favor of capability checks, two new meta capabilities have been introduced in this release:

  • upgrade_network is used to determine whether a user can access the Network Upgrade page in the network admin. Related to this, the capability is also checked to determine whether to show the notice that a network upgrade is required. The capability is not mapped, so it is only granted to network administrators. See #39205 for background discussion.
  • setup_network is used to determine whether a user can setup multisite, i.e. access the Network Setup page. Before setting up a multisite, the capability is mapped to the manage_options capability, so that it is granted to administrators. Once multisite is setup, it is mapped to manage_network_options, so that it is granted to network administrators. See #39206 for background discussion.

Both capabilities work in a backward-compatible fashion, so no changes should be required in plugins that deal with those areas. The capabilities however allow more fine-grained control about access to their specific areas. As an additional reminder: Usage of is_super_admin(), while not throwing a notice, is discouraged. If you need to check whether a network administrator has access to specific functionality in your plugin, use one of the existing network capabilities or a custom capability. See #37616 for the ongoing task.

New Hooks

  • deleted_blog fires after a site has been deleted. See #25584
  • signup_site_meta filters site meta in wpmu_signup_blog(). See #39223
  • signup_user_meta filters user meta in wpmu_signup_user(). See #39223
  • minimum_site_name_length filters the minimum number of characters that can be used for new site signups. See #39676

Network-specific site and user count control

With WordPress 4.8, several functions related to network site and user counts now support an additional $network_id parameter that allows to read and update those counts on a different network than the current one. While this mostly increases general flexibility, the new parameter can be leveraged to fix inconsistencies, for example prior to 4.8 the creation of a new site on another network would falsely trigger a recalculation of the current network instead of the network being actually modified. See #38699 for the bug ticket and resulting task.

The functions that now support a $network_id parameter are:

  • get_blog_count(). See #37865.
  • get_user_count(). See #37866.
  • wp_update_network_site_counts(). See #37528.
  • wp_update_network_user_counts(). See #40349.
  • wp_update_network_counts(). See #40386.
  • wp_maybe_update_network_site_counts(). See #40384.
  • wp_maybe_update_network_user_counts(). See #40385.
  • wp_is_large_network(). The filter wp_is_large_network now passes the network ID as fourth parameter as well. See #40489.

#4-8, #dev-notes, #multisite

Increased Concurrent Jobs on Travis CI Builds

https://travis-ci.org/WordPress now has 15 concurrent jobs instead of the default 5 available to all open-source projects.

This covers all projects under https://github.com/WordPress, so it will help with daily development of Gutenberg, build times for our official wordpress-develop build (especially during releases), and ensuring that builds for these two projects don’t interfere with each other.

Dev Chat Summary: May 17th (4.8 week 3)

This post summarizes the dev chat meeting from May 17th (agendaSlack archive).

4.7.5 Release

  • 4.7.5 was released; six security issues and three maintenance fixes, thanks to everyone who pitched in to get that out!

4.8 Timing

  • Beta 1 went out on Friday, May 12th
  • Beta 2 is due out this Friday, May 19th; potentially shepherded by @matias between 16:00 and 18:00 UTC
  • Please plan anything important before Beta 2 in by Thursday evening, May 18th

4.8 Bug Scrubs

4.8 Dev Notes / Field Guide

Location identification in Events widget

General announcements

  • Anything outside Customize, Editor, REST API, and CLI has lower priority focus in 2017
  • Major work on other components will likely not be merged or considered

#4-7, #4-7-5, #4-8, #dev-chat, #summary

4.8 Bug Scrubs for RC 1

The following bug scrubs will help us drop to 0 tickets in the 4.8 milestone by RC1 on Thursday, May 25th:

Reminder that Thursday, May 25th is 4.8 Release Candidate 1.

As a refresher, here’s a post from the 4.7 release cycle answering questions about bug scrubs.

#4-8, #bug-scrub

Cleaner headings in the admin screens

One of the most common needs for accessibility is providing tools to effectively navigate through content. Users of assistive technologies use headings as the predominant mechanism for finding page information. Headings provide document structure. Assistive technologies can list all the headings in a page to help users navigate and jump to different sections, like in a table of contents. For this reason, headings should contain just the heading text.

For a number of years, the main headings in the admin screens have been used to contain extraneous content, most notably the “Add new” button. WordPress 4.8 aims to fix this.

This is a continuation of the work started in 4.3 on restoring the H1 (heading level 1) to the admin screens and continued in 4.4 with the introduction of a better headings hierarchy.

What plugin or theme authors should know

If your plugin or theme follows the previous WordPress pattern of adding extraneous content to the main heading, please update your plugin or theme to make the heading cleaner. All you need to do is move the extraneous content outside of the heading. WordPress 4.8 ships with new CSS rules to take care of the new markup structure and in most cases, no additional changes will be required.

Of course, it’s impossible to cover all edge cases. If your plugin or theme uses additional content in the area next to the admin screens main heading, please double check now and be prepared to upgrade your markup and CSS to account for the cleaner headings. The relevant area is highlighted in the screenshot below and it applies to almost all the admin screens.

example of a main heading in the admin screens

Need more details?

If you need more details about the markup and CSS changes, please do have a look at the tracking ticket #26601 and the first changeset [38983], followed by several other ones all listed in the main ticket.

Get ahead of 4.8 and update now!

The power of the Web is in its universality. Help us to make the Web a place designed to work for all people. Any feedback and thoughts are more than welcome, please let us know in the comments below.

#4-8, #accessibility, #dev-notes

Dev Chat Agenda for May 17th (4.8 week 3)

This is the agenda for the weekly dev meeting on May 17, 2017 at 20:00 UTC:

If you have anything to propose to add to the agenda or specific items related to the above, please leave a comment below. See you there!

#4-7, #4-7-5, #4-8, #agenda, #dev-chat

Week in Core, May 3rd – 9th 2017

Welcome back the latest issue of Week in Core, covering changes [40569-40597]. Here are the highlights:

  • 29 commits
  • 42 contributors
  • 64 tickets created
  • 8 tickets reopened
  • 52 tickets closed

Ticket numbers based on trac timeline for the period above. The following is a summary of commits, organized by component.

Code Changes


  • Restore missing spinner when installing a new language. [40579] #40478
  • Remove unit and prefixed version from a CSS declaration. [40576] #35358
  • Accessibility: Improve the color contrast ratio of the dismiss notice buttons. [40570] #39970

Cron API


  • Add wp.editor.remove() for editors that were dynamically instantiated from JS. [40588] #35760
  • Accessibility: Make the Get Shortlink button be a real button. [40578] #26504, #40448


  • Add screencast.com to oEmbed provider whitelist. [40574] #38367



  • Optionally return attachment id from media_sideload_image(). [40597] #19629
  • Accessibility: Improve the suggested image size text in the media views. [40573] #38932

Networks and Sites

  • Multisite: Fix filter hooks for the updating network count functions. [40596] #40703
  • Multisite: Add $network_id parameter to wp_maybe_update_network_user_counts(). [40591], [40593] #40385, #38699
  • Multisite: Add missing documentation for new $network_id parameter of wp_maybe_update_network_site_counts(). [40592] #40384
  • Multisite: Add $network_id parameter to wp_is_large_network(). [40590] #40489
  • Multisite: Introduce minimum_site_name_length filter. [40589] #39676


  • WP_REST_Request::remove_header() should canonicalize header names. [40577] #40347
  • Improve strings added after 4.7 string freeze. [40571] #39178


  • Fix missing search field in the Theme Install screen after [40572]. [40586] #34881
  • Accessibility: Wrap the installed themes search field within a form element. [40572] #34881


  • Improve adding of custom UI to the MCE Factory. [40587] #40690
  • Fix linting errors in tinymce-obsolete.js. [40585] #40690
  • Remove the pre-4.6.0 tests. Move regression testing for obsolete tags and attributes to the default QUnit tests. [40584] #40690
  • Update to 4.6.0. Has many new features and bug [40583] #40690


  • Multisite: Check only valid looking emails against banned domain list. [40595] #39915
  • Multisite: Validate email before checking against banned domains. [40594] #39915
  • Correct a permission check when showing the User item in the + New admin toolbar menu. [40581] #39252
  • Clear the user settings cookies when clearing auth cookies. [40580] #32567


Thanks to @adamsilverstein, @afercia, @alexkingorg, @aryamaaru, @azaozz, @Cheffheid, @chris_dev, @cristianozanca, @danielbachhuber, @desrosj, @dl, @dotancohen, @DrewAPicture, @ENDif Media, @flixos90, @georgestephanis, @iseulde, @jeremyfelt, @joehoyle, @johnbillion, @kawauso, @kraftbj, @MatheusFD, @mattheu, @mikeschroder, @MrGregWaugh, @nacin, @ocean90, @pento, @PranaliPatel, @Presskopp, @SergeyBiryukov, @shane, @slbmeh, @soulseekah, @stormrockwell, @swissspidy, @takayukister, @tfrommen, @TimothyBlynJacobs, @trepmal, and @whyisjake for their contributions!