WordPress 4.6: What’s on your wish list?

In the spirit of the existing wish list posts, I’d like know what you have for WordPress 4.6.

  • What are you most interested in seeing in WordPress 4.6 — big, or small?
  • What are your or your users’ biggest pain points?
  • What do you see as the most important UXUX User experience to be solved?
  • Which existing feature should get a “version 2”?

Look forward to hearing from you in the comments! Let’s make.wordpress.org/great-again! 😉

 

The WordPress 4.6 kick-off chat will be next Wednesday, April 20, 2016 20:00 UTC.

#4-6, #wishlist

Week in Core, Jan. 12-19 2016

Welcome back to 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 from January 12th – January 19th, 2016, changesets [36269][36350]. Here are the highlights:

  • 81 commits
  • 38 contributors with props
  • 127 tickets created
  • 19 tickets reopened
  • 100 tickets closed

Ticketticket Created for both bug reports and feature development on the bug tracker. numbers based on trac timeline for the period above.

Note: If you want to help write the next WordPress Core Weekly summary, check out the schedule over at make/docs and get in touch in the #core-weekly-update SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. channel.

Code Updates

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)

  • After [36333] correctly use esc_attr() instead of esc_attr__(). [36334] #35313
  • Remove title attributes from the Posts list table. [36333] #35313, Media Library list table. [36331] #35136 & the Comments screen. [36298] #35304
  • Improve focus handling on the Taxonomies Quick Edit. Moves focus back to a proper place when saving or closing the form. [36304] #35460
  • Improve focus handling and audible feedback on the Posts Quick-Bulk Edit. Avoids a focus loss when saving or closing the form moving focus back to a proper place. Uses wp.a11y.speak() to dispatch successful edits and error messages to screen readers. [36303] #34756

Administration

  • CSSCSS Cascading Style Sheets.: Reference the original location of the CSS rule being overridden. [36342] #35229
  • CSS: Stop using wp-admin.min.css and instead queue the individual stylesheets up through load-styles.php. We still generate the wp-admin.* files for compabitility purposes, however they only include the @import() lines. [36341] #35229
  • List Tables: Use the $GLOBALS array when unsetting the global post and comment in WP_Comments_List_Table::single_row(). [36339] #35506
  • Allow searching for 0 throughout the adminadmin (and super admin). [36302] #31025
  • Add a “Drag boxes here” message to empty dashboard 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. boxes so it’s clear to users that it’s possible to drag meta boxes into empty spaces. [36295] #26399
  • Support searching for '0' in WP_Query. [36278] #31025

Build/Test Tools

  • Build/Test Tools: Move PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher factory classes into their own files. [36347] #35492\
  • Build Tools: Append the timestamp to $wp_version instead of only the current date. [36315] #28722

Canonical

  • After [36280] remove the unit tests which are no longer supported for 4.4. This also removes the is_feed() code to avoid confusion – only pages & embeds will be redirected. [36281] #35344
  • Restore the is_404() check in wp_old_slug_redirect() which was removed in [34659]. This reverts part of [34659] due to excessive canonical problems it’s caused in 4.4.x. [36280] #35344, #21602

Comments

  • Ignore false values of ‘search’ in WP_Comment_Query. [36345] #35513
  • Remove unused $default_comments_page variable in get_comment_link(). [36343] #34073, #35511
  • Correct description of comment_author property in WP_Comment class. The comment_author property is the comment author’s name, not an ID. [36332] #35464
  • Respect all post-related filters in WP_Comment_Query. [36326] #35478
  • Use TEXT column type in fallback for wp_get_comment_column_max_length(). [36325] #10377
  • Respect custom pagination params when using wp_list_comments() in a query 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.. [36324] #35402
  • Remove unneeded $req variable in comments_template(). [36322] #35473
  • Add a new pre_wp_update_comment_count_now 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.. [36318] #35060
  • Use assertEqualSets() in comment_author test. The previous assertion was too specific, resulting in race conditions. [36279] #35377
  • Use the post-filter WHERE clause when querying for comment descendants. [36277] #35192
  • Always respect $comments array passed to wp_list_comments(). [36276] #35175, #35356
  • Ignore hierarchy in pagination calculation when comment threading is disabled. [36275] #8071, #35419
  • Restrict the maximum characters for input fields within the comments template. [36272] #10377

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.

Embeds

  • Allow embedding static front pages and pages having a child page with an embed slug. This makes embed a special slug that can’t be used for new pages/posts. When https://example.com/foo/embed/ is an existing page, embeds fall back to https://example.com/foo/?embed=true. Adds unit tests. [36307] #34971

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.

Formatting

  • Emoji: adjust $wpsmiliestrans. Swap simple-smile.png with SLIGHTLY SMILING FACE and frownie.png with SLIGHTLY FROWNING FACE [36336] #31710

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

  • Add response status code aliases on WP_Http for convenience. These provide a more descriptive way to set response codes elsewhere, so it’s readable and less chance for the wrong response code to be used such as 401 vs 403. [36294] #35426
  • Add missing HTTP status code descriptions (specifically 308 and 421.) [36274]
  • Add support for 451 http status code (Unavailable For Legal Reasons.) Though this is technically still in the proposal stage, there is support from the core team and precedent in #16914 [36273] #16914, #35333

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.

  • Introduce tests for WP_Locale. [36292] #34688
  • Correct an argument description and return value for wp_dropdown_languages(). [36290] #35294

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/.

  • In wp.Backbone.Subviews, extract subviews with proper Underscore.js functions. [36305] #34350
  • jQuery: Replace use of deprecated methods and events. [36288], [36287], and [36286] for #35380,
  • External Libraries: Update jQuery to 1.12.0 and jQuery Migrate to 1.3.0. [36285] #35380

Media

  • Update some attach/detach strings in the columns view. [36328] #33237

Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site

  • Add initial tests for the allowed_themes filter. [36350] #28436

Networknetwork (versus site, blog) and Sites

  • Clarify the docblockdocblock (phpdoc, xref, inline docs) for get_current_site() so it’s clear that it returns the current network object, not anything to do with the current site. As a further exercise, the reader is invited to fix the nomenclature surrounding blogs, sites, and networks in WordPress. [36293] #35414

Performance

  • Share post fixture in WP_Comment_Query tests. [36346] #30017
  • Script Loader: Add Etag: $wp_version 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. in load-scripts.php and load-styles.php. This improves performance since browsers won’t re-download the scripts and styles when there was no change in $wp_version. [36312] #28722

Plugins

  • Prevent a warning when searching in the plugins list table. [36301] #35461
  • Make sure the ‘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. testing’ tab is first in the 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 installer. This makes feature plugins more discoverable for people running development builds. [36297] #29631
  • In _get_plugin_data_markup_translate() remove the fallback to the “default” textdomain for Akismet. Akismet has its own language files since WordPress 3.9. [36283] #35436

Posts, Post Types

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.

  • Don’t double-escape the ‘name’ param in get_terms(). [36348] #35493
  • Populate term cache with proper clone of term objects. [36323] #35462
  • Fix unit tests after [36308]. [36309] #34988
  • Introduce wp-admin/term.php for editing single terms. [36308] #34988
  • Correct the accetped types for the taxonomy element in the arguments passed to wp_dropdown_categories(). [36289] #35446

Themes

  • Show template loading error to users with switch_themes cap. [36344] #21931
  • Only users with proper capability should see theme errors. [36338] #21931
  • Show an error message to logged-in users if a template file isn’t loaded. [36335] #21931
  • Clear floated theme cards on Themes page. Also maintains visual separation for Broken Themes table on searches that return no results. [36270] #26646

Upgrade/Install

  • Add a locking mechanism to avoid two concurrent updates of WordPress occuring. [36349] #34878

Users

  • Always return $current_user in wp_get_current_user(), never a boolean. [36313] #19615
  • Deprecate the get_currentuserinfo() pluggable function. [36311] #19615
  • Decode special characters in password and email change notification emails. [36306] #35283

Props

Thanks to @5um17, @adamsilverstein, @afercia, @andizer, @berengerzyla, @boonebgorges, @chriscct7, @danielbachhuber, @dd32, @DrewAPicture, @ericlewis, @firebird75, @grapplerulrich, @iseulde, @ivankristianto, @jeremyfelt, @jmdodd, @joehoyle, @johnbillion, @jrf, @kraftbj, @Latz, @meitar, @MikeHansenMe, @obenland, @ocean90, @peterwilsoncc, @rachelbaker, @realloc, @rmccue, @scribu, @sebastianpisula, @sergejmueller, @SergeyBiryukov, @swissspidy, @valendesigns, @westonruter, and @xavortm for their contributions this week!

#4-5, #week-in-core

Week in Core: Sept. 28 – Oct. 11, 2015

Welcome back to 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 from Sept. 28 – Oct. 11, 2015, changesets [34659][35029]. Here are the highlights:

https://make.wordpress.org/core/2015/10/07/%F0%9F%8E%89-one-more-committer-for-4-4/

See that ↑ right there? That’s an oEmbed. And it’s loaded from inside this site.

Feature Plugins Merged

The Responsive Images, oEmbed Provider, and the “baby” REST API feature plugins have been merged into core. Grab the latest version of 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. and test them out.

WordPress logo with wordmark below

Responsive images in your posts. Just upload and insert!

Potent Notables

These changes were big enough to merit their own blogblog (versus network, site) posts:

Deeper Reading

Some commits pack in a lot of info, from detailed background to best practices in using 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.. Here are a few worth reading the entire commit message:

  • WP_Term class introduced [34997] #14162
  • Fix scalability performance problem for previewing multidimensional settings in the 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.. [35007] #32103
  • Ensure that wp.customize.Widgets.savedWidgetIds is defined up front. [34883] #33901
  • The history and implementation of oEmbeds. [34903] #32522
  • Improve role-related arguments in WP_User_Query. [34875] #22212
  • Use wp_installing() instead of WP_INSTALLING constant. [34828] #31130
  • Introduce *_network_option functions for Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site installs. [34777] #28290
  • Ensure that comment permalinks reflect pagination. [34735] #34068, #34073

Continue reading

#4-4, #week-in-core

Week in Core: Aug. 31 – Sept. 12, 2015

Welcome to the Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., with updates from weeks 2 & 3: Aug. 31 – Sept. 12, 2015, changesets [33821][34092].

It’s been a busy couple of weeks in Core, with almost too many changes to count (for the record, this one covers 271 commits!). I’m going to keep this update shorter than usual and highlight some of the bigger changes.

If you’re interested in helping write this weekly post, pingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” @morganestes in #core-weekly-update on Slack.

Special Note: WordPress 4.3.1 was released this week, with three security-related fixes. Be sure to update your sites!

Here’s some highlights of recent changes in core, along with some future plans and ongoing initiatives. Remember, Core moves pretty fast. If you don’t stop and look around once in a while, you could miss it.

  • WordPress will support PHP7 when it’s released. Huzzah!
  • 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./2 is coming! Here’s a list of tickets that need attention to get WordPress ready.
  • Get involved in Twenty Sixteen, which is in active development on GitHub.
  • Write better commit messages. The world will thank you for it. 🙂
  • As described in this post by @johnbillion, the show_ui flag for post types now gets fully honored. See #33763 for the ticketticket Created for both bug reports and feature development on the bug tracker. discussion.
  • A new helper function, wp_validate_action( $action = '' ), was introduced in [34059] and is used throughout adminadmin (and super admin) instead of directly accessing $_REQUEST['action'].
  • A new file, wp-admin/includes/noop.php, was created to load all of the noop functions for load-script|styles.php and is only loaded by those files. DRYs in the process. [34037] #33813
  • Schema change introduced in [34030] to increase the length of wp_options.option_name to 191 chars. #13310
  • Implement a priority system for Help Tabs to add them at specific positions. [33985] #19828
  • Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site: Don’t allow sites to be created with the following reserved slugs: wp-admin, wp-content, wp-includes [33952] #33615
  • Updated recommendations for minimum versions of PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher (5.6) and MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com/. (5.5), with a special note that Oracle only actively supports MySQL for 5 years after a General Availability release. [33937] [33946]

For the full report, visit https://core.trac.wordpress.org/log/?verbose=on&format=changelog&rev=34092&stop_rev=33821&limit=400&mode=stop_on_copy.

Thanks to @adamsilverstein, @afercia, @amereservant, @ankit-k-gupta, @antpb, @austinginder, @azaozz, @BdN3504, @benjmay, @boonebgorges, @bradt, @brettz95, @celloexpressions, @cgrymala, @Cheffheid, @chriscct7, @codeelite, @CoenJacobs, @danielbachhuber, @daniellandau, @dannydehaan, @dd32, @dimadin, @dipeshkakadiya, @dlh, @DrewAPicture, @dustinbolton, @egower, @enshrined, @ericdaams, @ericlewis, @extendwings, @figureone, @filosofo, @gaelan, @GaryJ, @gitlost, @gnaka08, @gradyetc, @gregrickaby, @hauvong, @helen, @imath, @ippetkov, @iseulde, @ixkaito, @jazbek, @jeffstieler, @jeremyfelt, @jesin, @jobst, @johnbillion, @joostdevalk, @jorbin, @juliobox, @JustinSainton, @kevinlangleyjr, @khromov, @kitchin, @kraftbj, @lancewillett, @liljimmi, @lukecarbis, @macmanx, @MatheusFD, @mehulkaklotar, @mercime, @metodiew, @michielhab, @MikeHansenMe, @miqrogroove, @mitchoyoshitaka, @mordauk, @morganestes, @mrahmadawais, @mrmist, @Mte9, @nacin, @netweb, @nikeo, @nikolovtmw, @nofearinc, @obenland, @ocean90, @OriginalEXE, @Otto42, @paulwilde, @pavelevap, @pento, @peterwilsoncc, @racaseh, @rachelbaker, @rajnikmit, @rmccue, @rommelxcastro, @sc0ttkclark, @scribu, @SergeyBiryukov, @sillybean, @solarissmoke, @stevehenty, @swissspidy, @tmatsuur, @trepmal, @tyxla, @umeshnevase, @utkarshpatel, @wen-solutions, @wenthemes, @westonruter, @wojtekszkutnik, @wonderboymusic, @yoavf, and @zeo for their contributions!

#4-4, #week-in-core

WordPress Core Weekly – Aug. 24-30, 2015

Welcome back to the weekly coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. development recap post, with highlights from TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. changesets and other development updates for 4.4. This week’s update covers changesets [33721][33820], Aug. 24-30, 2015. That’s a lot of changes, but there are a few that developers need to be especially aware of:

  • File restructuring: new class and functions files have been introduced, and existing files used as loaders for the new files for backwards compatibility.
  • File and class documentation enhancements: ensuring every file gets a standard file 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., even if that file only contains a class that is itself documented.
  • Switching themes now takes menu locations into account so the new theme (maybe) gets the locations of the current theme.
  • New 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. introduced: 'invite_user' (Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site users) and 'wp_verify_nonce_failed'.
  • The Twenty Sixteen theme is being developed on GitHub.

Now on to the firehose…

Administration

  • Bump h3 headings to h2 on various adminadmin (and super admin) screens for better 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):
  • Networknetwork (versus site, blog) Admin: Hide the bulk actions checkbox for super admins. [33777] #28529
  • Avoid PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher notices in redirect_canonical() and _wp_menu_item_classes_by_context() if $_SERVER['HTTP_HOST'] is not set. [33775] #32229

General

  • Remove error from the query variables when cleaning up a URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org in wp_admin_canonical_url(). [33770] #32847
  • Prevent unintended password change after clicking “Generate Password” and then “Cancel” when editing a user profile. [33766] #33419
  • When wp_json_encode() calls json_encode(), the latter will generate warnings if the string contains non-UTF-8 characters. No one likes warnings, so we need to do something about that. [33747] #33524
  • Add oEmbed support for ReverbNation. [33745] #33207
  • Remove rounded corners from “Choose from the most used tags” result in Tags 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. [33742] #31560
  • Add some more data for shortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site. unit tests. [33740] #33455
  • Allow these CSSCSS Cascading Style Sheets. properties in KSES: min-height', 'max-height', 'min-width', 'max-width' [33739] #31949
  • Pass option name to option and transient filters with dynamic names. [33738] #28402
  • In get_home_url(), import the $pagenow global to avoid having to check if it exists before comparing against it. [33736] #33545
  • In WP_Users_List_Table::single_row(), $actions is not always set before being used. [33735] #33491
  • foreach is a statement, not a function. [33734] #33491
  • Instead of [33713], allow WP_Posts_List_Table::get_bulk_actions() to check edit_posts AND delete_posts. [33733] #29789
  • TinyMCE: ensure the wordpress 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 is loaded before calling _createToolbar(). [33728] #33393
  • With a few modifications in wp-admin/menu.php, we can eliminate the extra logic for Post and Page menu registration. Instead, they can just declare menu_position on post type registration. [33723] #16865
  • WP_Query: add changelog for the title param after [33706] [33722] #33074

Restructured some files for separation of purpose, so class files only contain classes, functions files only contain functions, and the existing file loads the new files for backwards compatibility.

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.

Move WP_Tax_Query into class-wp-tax-query.php and functions into taxonomy-functions.php; taxonomy.php contains only top-level code and loads the new files. [33760] #33413

Posts

Move WP_Post into class-wp-post.php and functions into post-functions.php. post.php contains only top-level code and loads the new files. [33759] #33413

Roles

Move classes into their own files, and functions into its own:

  • class-wp-roles.php
  • class-wp-role.php
  • class-wp-user.php
  • capbilities-functions.php

capbilities.php contains only top-level code and loads the new files. [33752] #33413

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.

Move classes into their own files and functions into its own:

  • class-wp-http-cookie.php
  • class-wp-http-curl.php
  • class-wp-http-encoding.php
  • class-wp-http-proxy.php
  • class-wp-http-streams.php
  • http-functions.php

http.php contains only top-level code and loads the new files, so this is 100% BC if someone is loading http.php directly.

class-http.php requires functions from http.php, so loading it by itself wouldn’t have worked.

WP_Http remains in class-http.php. [33748] #33413

Meta

Move WP_Meta_Query into class-wp-meta-query.php and functions into meta-functions.php. meta.php contains only top-level code and loads the new files. [33761] #33413

Rewrite

Move WP_Rewrite into class-wp-rewrite.php, functions into rewrite-functions.php, and constants into rewrite-constants.php. rewrite.php contains only top-level code and loads the new files.

The rewrite functions have all kinds of cross-dependencies (like WP_Query), so loading the file by itself would have been bizarre (and still is). [33751] #33413

Comments

Move WP_Comment_Query into class-wp-comment-query.php, and functions into comment-functions.php. comment.php contains only top-level code and loads the new files. [33750] #33413

Users

Move WP_User_Query into class-wp-user-query.php and functions into user-functions.php. user.php contains only top-level code and loads the new files. [33749] #33413

Widgets

Move classes and functions into their own files:

  • class-wp-widget.php
  • class-wp-widget-factory.php
  • widget-functions.php

widgets.php contains only top-level code and loads the new files. [33746] #33413

Docs

It’s important for every file in WordPress, regardless of makeup or architecture, to have its own file header, even if the file contains nothing but a class. When parsed, files and classes are mutually exclusive and should be documented with this in mind. [33755] [33756] #33413

  • Bring the file header and class DocBlockdocblock (phpdoc, xref, inline docs) summaries for class-wp-widget.php in-line with the intention of the docs standard:
    • File headers: What the file is
    • Class DocBlocks: What purpose the class serves. Mentioning the class name in the class DocBlock is redundant [33816] #33413
  • Add inline-docblocks for the require_once() calls that now bring in the WP_Widget and WP_Widget_Factory classes, as well as general core widgets functionality, as of [33746]. [33758] #33413
  • Add a file header description and @since version to wp-includes/widget-functions.php, introduced in [33746].
    Also adds sub-section headers per the inline documentation standards for syntax. [33757] #33413
  • Add a file header to wp-includes/class-wp-widget-factory.php, created when the WP_Widget_Factory class was moved to its own file in [33746]. [33756] #33413
  • Correct the hook docs for the user_profile_update_errors action. [33769] #33537
  • After [33764], fix docblock formatting for wp_list_categories(). [33765] #33460
  • Use proper array documentation formatting for wp_list_categories().
    This changeset also corrects a few parameter descriptions, and adds a few that
    were previously missing. [33763] #33556
  • Fix copy pasta in wp_cache_decr() doc blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.. [33809] #33548
  • The type for the $t_time parameter in the post_date_column_time 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. docs should be string, not array. [33731] #33540
  • Document the default comment data arguments for wp_new_comment(). [33730] #32369
  • After [33698], wrap the time constants in a DocBlock template. [33737] #33397
  • Clarify the return description for wp_create_user() to illustrate that a WP_Error object will be returned on failure. [33725] #33321

Add changelog entries for a variety of hook doc parameters added in [33738]:

hook parameter changeset/ticketticket Created for both bug reports and feature development on the bug tracker.
set_site_transient_$transient $transient [33794] #28402
site_transient_$transient $transient [33792] #28402
pre_delete_site_option_$option $option [33789] #28402
pre_add_site_option_$option $option [33788] #28402
pre_site_option_$option $option [33785] #28402
transient_$transient $transient [33783] #28402
option_$option $option [33779] #28402
pre_option_$option $option [33768] #28402
pre_set_site_transient_$transient $transient [33793] #28402
pre_site_transient_$transient $transient [33791] #28402
pre_update_site_option_$option $option [33790] #28402
site_option_$option $option [33787] #28402
default_site_option_$option $option [33786] #28402
pre_set_transient_$transient $transient [33784] #28402
pre_transient_$transient $transient [33782] #28402
update_option_{$option} $option [33781] #28402
pre_update_option_$option $option [33780] #28402
default_option_$option $option [33778] #28402

Themes

  • Get the correct theme when template and stylesheet were both passed as arguments. Fixes 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. introduced in [21131] where $new_theme got set before the second argument was
    appropriately handled, causing the current_theme option to later always be updated to the parent theme’s name. [33815] #32635

Widgets

  • Improve/update escaping in default widgets:
    • wrap some variables in esc_attr() before echoing
    • replace some strip_tags() calls with sanitize_text_field()
    • call esc_url() when wrapping some URLs [33814] #23012
  • Improve/update escaping in WP_Widget_Pages. [33813] #23012
  • Switch back to using array_key_exists() instead of isset() for 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. instance existence check.
    Reverts unnecessary change in [32602] since array_key_exists() does actually work with ArrayIterator objects.
    Merges [33696] to the 4.3 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".. [33721] #32474, #33442

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.

  • Add some theme mod unit tests. [33812] #28637
  • Prevent JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. error during init when nav_menus panel is removed by plugin. [33753] #33411
  • Ensure persistence of unchanged active state for controls, sections, and panels. [33754] #33428, #33494
  • Use existing decoupled strings in Menu Locations section. See [31941] and [31951]. [33741] #33416

Comments

  • Fix the doc block syntax for the 'wp_get_current_commenter' filter. [33811] #33304
  • get_comment_count() currently increments awaiting_moderation when comments are in the trashTrash Trash in WordPress is like the Recycle Bin on your PC or Trash in your Macintosh computer. Users with the proper permission level (administrators and editors) have the ability to delete a post, page, and/or comments. When you delete the item, it is moved to the trash folder where it will remain for 30 days.. This occurs because case 0: will match any value passed to switch that is a string that isn’t specified in the list of cases. This is terrifying.
    Cases for 0 and 1 should be '1' and '0'
    Add unit tests for get_comment_count(). Currently, there are none. [33806] #33414

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.

  • Favor using the consistent and agnostic string ‘Attach’ over ‘Attach to a post’ in the media list table. [33810] #33515
  • Make a period translatable. [33802] #33594
  • Switching themes: if the new theme doesn’t have nav_menu_locations defined, but the old theme does, copy the old theme’s nav_menu_locations into the new theme’s theme mods. [33808] #18588

Media

  • Improve the reliability of the crop returned by image_get_intermediate_size() and add a bunch of unit tests to tests/image/intermediate_size.php. [33807] #17626
  • When inserting an image into a post, the values in wp.media.controller.Library should not default to linking the image when no user settings are present.
    The default display setting value for link is now none. User settings persist and will override or confirm this value based on user actions. [33729] #31467

Posts, Post Types

  • In get_post_type_labels(), ensure that filtered labels contain all required default values. [33776] #33543
  • Don’t change the View Post button permalink in the sample permalink HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. when updating the slug on a published or future post. [33773] #32954
  • Pass taxonomy name to filters in get_adjacent_post(). [33805] #33568
  • Make post meta box toggles accessible. [33762] #33544

Multisite

  • Improve the efficiency of is_user_member_of_blog() by removing its use of get_blogs_of_user(). Adds additional tests. [33771] #32472
  • Add 'invite_user' action that fires immediately after a user is invited to join a site, but before the notification is sent. [33732] #33008

Taxonomy

  • In wp_list_categories(), ‘current_category’ should accept an array of values. [33804] #33565
  • Introduce $hide_title_if_no_cats parameter to wp_list_categories(). [33764] #33460
  • Rename param added to wp_list_categories() in [33764] to $hide_title_if_empty. [33767] #33565
  • Term Splitting: Switch to a faster cron unschedule process to benefit sites with thousands of affected jobs. Fix the cron hook name in the failsafe rescheduler. [33727] #33423
  • In WP_Query::parse_tax_query(), allow ‘cat’ and ‘tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.)’ querystrings to be formatted as arrays. [33724] #32454, #33532

Date/Time

  • Simplify the weeks-per-year calculation WP_Date_Query::validate_date_values(). [33803] #30845

Users

  • Bring network admin user searching to parity with single site user searching by wrapping search terms in asterisks. This means that searches don’t require an exact match and therefore significantly reduces friction when searching for users on the network admin screens. [33801] #32913

Bundled Theme

Correct license information in readme.txt.

Text Changes

  • Drop the hyphen from e-mail and standardize on email.
    The AP Stylebook changed this in 2011, and we’re woefully inconsistent, so let’s go with the standard. [33774] #26156

Upgrade/Install

Security

  • Add 'wp_verify_nonce_failed' action that fires when nonce verification fails. [33744] #24030
  • Fire the check_ajax_referer action on failure as well as success. [33743] #33342

Build Tools

Thanks to @azaozz, @BinaryKitten, @boonebgorges, @bordoni, @Cheffheid, @chipbennett, @danielbachhuber, @dd32, @DeBAAT, @dimadin, @DrewAPicture, @ebinnion, @egill, @eherman24, @ericlewis, @garza, @hauvong, @helen, @janhenckens, @jjeato, @jmayha, @joedolson, @joehills, @joemcgill, @johnbillion, @KalenJohnson, @kitchin, @liljimmi, @luciole135, @mako09, @MikeHansenMe, @miqrogroove, @morganestes, @niallkennedy, @nikeo, @obenland, @Otto42, @pavelevap, @pento, @peterwilsoncc, @rachelbaker, @rhubbardreverb, @sammybeats, @sboisvert, @scribu, @SergeyBiryukov, @Shelob9, @tyxla, @Veraxus, @vilkatis, @Viper007Bond, @voldemortensen, @welcher, @westonruter, @wonderboymusic, and @yamchhetr for their contributions!

#4-4, #week-in-core

WordPress Core Weekly

Howdy, and welcome to this week’s installment of WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Weekly – covering February 26, 2015 [31545] through March 4, 2015 [31620].

If you want to write the next WordPress Core Weekly summary, check out the schedule over at make/docs and get in touch in the #core-weekly-update Slack channel.

Let’s start with a warm welcome to our new Component Maintainers, who play an important role in the development process.

Build/Test Tools: @voldemortensen
Comments: @rachelbaker
Editor – Press This: @michael-arestad, @stephdau
General: @SergeyBiryukov
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.: @SergeyBiryukov
Options, 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. APIs: @MikeHansenMe
Themes – Customize: @voldemortensen
Users: @justinsainton

These maintainers are vital to keeping WordPress development running as smoothly as possible. They triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. new tickets, look after existing ones, spearhead or mentor tasks, pitch new ideas, curate roadmaps, and provide feedback to other contributors.

Dev Chat Notes

This week’s Dev Chat was a lively one, with updates on the 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. and Press This (with an emphasis on 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), hooray!), Shiny Updates (needs helping hands, see the todo list), Emoji (not just for smiles), and Accessibility (revisiting the age-old a vs button question).

If you missed the meeting, or need a reminder of what was discussed, take a few minutes to read the transcripts.

A couple of reminders: we’re a week away from Beta 1, and Daylight Saving Time is coming so make sure to check the time of next week’s Dev Chat so you won’t miss it!

Tickets needing a look:

Code Updates

It’s been a busy week with lots of commits, so let’s get into the ticketticket Created for both bug reports and feature development on the bug tracker. overview:

Media

  • Allow inline editing of width and height parameters while previewing an embed in the media modal. [31620] #31139
  • Media modules: set $ to Backbone.$, instead of jQuery, so fewer globals are imported. [31618] #28510
  • When viewing media in List mode, auto-submit the form for attachment filters when the value of a <select> changes. This makes it behave similar to Grid mode and “feels” more performant, even though it is a full page load. [31582] #30333
  • Allow attachments to be detached from their parent in media grid and list modes. [31619] #6820
  • In the Insert From URL state of the Post frame, add the necessary CSSCSS Cascading Style Sheets. for focus styles for images. [31585] #28820
  • Build: Let RTLCSS handle swapping the codes for right/left arrows from Dashicons. [31579] #31478
  • Support GIMP files in the Media Library. We already support Photoshop files. [31578] #31146
  • In the ->multi_resize() method of the WP_Image_Editor subclasses, when looping through potential crops, we need to make sure the crop isn’t the exact same dimensions as the original image before copying it as a new crop. [31576] #31296
  • Make a new function, wp_delete_file(). Use it. [31575] #17864
  • Improve get_media_embedded_in_content() so that it returns the media it finds in the same order that it appears in the content. [31574] #26675
  • Customize Widgets: Don’t return undefined items in getWidgetFormControls method. [31570] #31465
  • CSS: Move relevant #sidemenu rules into deprecated-media.css and remove the cruft. [31564] #27956
  • Persist search terms across grid/list modes. [31562] #30583

Comments

  • Respect comment_date and comment_date_gmt params in wp_new_comment(). [31615] #14279
  • In get_next_comments_link(), ensure proper pagination when no ‘cpage’ query var is found. [31617] #20319
  • wp_insert_comment() should be checking and setting $compacted, not the non-existent $post_data. [31553] #21212

TinyMCE/Editor

wpView

  • decode HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. entities before trying to insert view markers. [31612] #31412
  • introduce getText() and remove() methods, improved getInstance(), better docs. [31559] #31412
  • Better structure; simpler “view” registration; better extensibility; better inline documentation; don’t show a placeholder for pasted link until we know the link is “embeddable’. [31546] #31412
  • Remove the (obsolete) get/setViewText methods. Update stopping/pausing of multiple ME media players. [31548] #31412

wpLink

General

  • Autocomplete: Update CSS based on both jQuery UIUI User interface and general visual changes. [31611] #31427
  • Add wp.a11y.speak() for audible alerts/updates in screen readers. [31594] #31368
  • Remove the once-placeholder-esque “tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) hint”, which has not worked in quite some time. [31607] #31485
  • When sanitizing a URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org to redirect to, UTF-8 characters can be URL encoded, instead of being removed. [31587] #31486
  • Introduce get_object_terms 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. in wp_get_object_terms(). [31581] #18828
  • In get_avatar_data() and get_avatar(), allow height and width to be specified separately (both default to size). Also allow arbitrary attributes on the <img> via the extra_attr arg. [31561] #31469
  • Permalinks: In wp_get_attachment_url(), convert to HTTPSHTTPS HTTPS is an acronym for Hyper Text Transfer Protocol Secure. HTTPS is the secure version of HTTP, the protocol over which data is sent between your browser and the website that you are connected to. The 'S' at the end of HTTPS stands for 'Secure'. It means all communications between your browser and the website are encrypted. This is especially helpful for protecting sensitive data like banking information. when possible. [31614] #15928

Posts, Post Types

  • List tables: Display front and posts page indicators. [31610] #30190
  • Hide irrelevant UI and display a message when editing the page for posts. [31550] #17470

Press This

  • Add missing access modifiers to WP_Press_This. [31552] #31456
  • Add press-this.css to the list of stylesheets that are minified and to list of RTL styles. [31547][31572] #31373
  • Make sure buttons.css is loaded before press-this.css. [31597] #31373
  • Use correct URL for update bookmarklet link. [31556] #31461
  • Go back to loading the minified bookmarklet content with file_get_contents(). Add Grunt task to minify bookmarklet.js on precommit and update it in /src. [31545] #31373
  • Improve handling of the data, both from the bookmarklet and from server-side parsing. [31609] #31373
  • Remove unneeded passing of post formats strings to JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.. Set the currently selected post format name with jQuery. [31589] #31373

[31601] #31493

  • Remove classes from suggested HTML for the editor.
  • Improve the filter, pass an associative array as param.
  • Use <em> instead of <cite>.

[31595] #31373

  • Simplify getSuggestedContent() and helpers. No need to override the global data.
  • Replace the press_this_source_string and press_this_source_link filters with press_this_suggested_html that allows filtering of the link and the wrapper HTML tags.

[31588] #31373

  • Backwards compatibility enhancements.
  • Add missing actions for printing styles/scripts.
  • Since $hook_suffix is null, hardcode press-this.php.
  • Restore body classes, add filter.
  • Use wp_json_encode().
  • Update docs for filters in script-loader.php.

General

  • TinyMCE: set ‘directionality’ and add the LTR button when in RTL. [31580] #31474
  • RTL improvements: [31577] #31478, #31474
  • Fix and update buttons styles. [31598] #31498
  • When there is a protocol mismatch (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. vs. https), use server-side media detection instead of submitting a form as it triggers “Unsafe data” warning in some browsers. [31584] #31468
  • Fix selecting a post format (radio buttons) with the keyboard. [31583] #31440
  • Accessibility enhancements [31566] #31449
  • Enable scrollbars in Firefox, remove overflow-x: hidden from the html element. [31565] #31455
  • Fix notices/errors classes. [31549] #31456

Administration

  • Fix a typo in the $args parameter hash notation description for add_settings_field(). [31593] #28975
  • Nav menus: Better JS performance on initial load of edit screen. [31604] #25698
  • Themes: Avoid jumping when selecting a feature in the feature filter on Add Themes screen. [31603] #31497

External Libraries

Administration

  • Settings 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.: Allow passing a class to add_settings_field() via the $args array. [31560] #30168, #28975

Build/Test Tools

  • RTL CSS generation: Switch from CSSJanus to RTLCSS. [31573] #31332
  • Run unit tests on Travis CI with PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher nightlies. With PHP7 in active development, this will help us identify issues there. [31558] #31454
  • Update grunt-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.-wordpress to 0.3.0. [31557] #31466

Thanks to @abhishekfdd, @afercia, @alexkingorg, @atimmer, @azaozz, @boonebgorges, @couturefreak, @doublesharp, @DrewAPicture, @floriansimeth, @GrahamArmfield, @HarishChaudhari, @helen, @ipm-frommen, @iseulde, @joemcgill, @jorbin, @kopepasah, @kraftbj, @Michael-Arestad, @MikeHansenMe, @miqrogroove, @MomDad, @morganestes, @nacin, @ocean90, @kadamwhite, @oso96_2000, @pento, @postpostmodern, @rodrigosprimo, @scribu, @SergeyBiryukov, @sevenspark, @solarissmoke, @stephdau, @swissspidy, @valendesigns, @welcher, @westonruter, and @wonderboymusic for their contributions!

#4-2, #week-in-core

Last Week(s) in WordPress Core

Hi Everyone! It’s time for another update. This edition covers through Sunday, June 15th, and has taken a while due to travel, but @swissspidy & @designsimply have joined the team, helping to gather the information to bring us up to date. Hopefully this will help these updates be a bit more sustainable over time. If you’re interested in pitching in with these updates as well, please let me know in the comments below!

Especially of note are the first pass of the grid view for the media library, several SSLSSL Secure Sockets Layer. Provides a secure means of sending data over the internet. Used for authenticated and private actions. and oEmbed updates, and a new ‘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. Testing’ tab on the Plugins screen.

Adminadmin (and super admin)

  • Plugins Screen: Add a new ‘Beta Testing’ tab on the 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 screen, for features as plugins such as Press This. [28749] #28513
  • Media Library: Grid view for the media library, first pass. This is alpha; expect imperfection to start. [28682] #24716

SSL

  • Forcing SSL logins now forces SSL for the entire admin. [28609] #10267
  • Force SSL on the frontend when the home URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org uses HTTPSHTTPS HTTPS is an acronym for Hyper Text Transfer Protocol Secure. HTTPS is the secure version of HTTP, the protocol over which data is sent between your browser and the website that you are connected to. The 'S' at the end of HTTPS stands for 'Secure'. It means all communications between your browser and the website are encrypted. This is especially helpful for protecting sensitive data like banking information.. [28610] #27954
  • Force SSL admin when siteurl is explicitly configured with HTTPS. [28674] #27954
  • Use a secure logged_in_cookie when the home URL is forced HTTPS. [28627] #15330
  • Deprecate url_is_accessable_via_ssl(). [28709] #19555

Embeds

  • Read src attribute for the [embed] shortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site. if the shortcode body is empty. [28559] #24456
  • Add “edit” mode for [embed] and URL media previews. [28752] #28532
  • New wp_embed_register_handler to catch bad YouTube URLs and try correct them. [28652] #24660
  • Add oEmbed support for:
  • Update SlideShare oEmbed regex. [28597] #28380
  • Remove Viddler oEmbed support. [28596] #28379
  • Make it simpler for plugins to register MCE views. [28680] #28458
  • Set shortcode equal to the passed type from default args when calling wp.mce.views.register(). [28689] #28458
  • Improve handling of embed errors/error messages. [28754] #28195

Themes and Templates

  • Add a 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 human_time_diff() to allow more detailed depictions of time differences. [28670] #27271
  • Allow simple modification of sections of the title by adding a wp_title_parts filter to wp_title(). [28669] #17877
  • Add CSSCSS Cascading Style Sheets. rules to ensure that videos will be responsive, regardless of theme. [28650] #28414
  • Replace TEMPLATEPATH and STYLESHEETPATH with get_template_directory() and get_stylesheet_directory(). These constants are now deprecated [28563] #18298
  • Update Twenty Thirteen and Twenty Fourteen to Genericons 3.0.3. [28692] [28693]

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)

  • Improve keyboard accessibility for the media modal. [28607] #23560
  • Add screen reader labels to the date inputs on the post editing screen. [28730] #25461

WP_Query

  • When parsing the main query, if s is set to empty: ?s= and $this->is_main_query() && array_key_exists( 's', $this->query ) – kill the query instead of loading the homepage. This will load the search page with no results. [28612] #11330
  • Kill queries that explicitly pass empty arrays to category__in, tag__in, tag_slug__in, and author__in to WP_Query. [28664] #28099
  • Fix SQL generation when meta_query has an 'relation' => 'OR' for its queries and wants to 'orderby' => 'meta_value'. [28659] #25538
  • Allow users to sort posts by type in WP_Query. [28605] #28214
  • Add access modifiers to WP_User_Query Add magic methods for BC: get(), set(), isset(), unset(), and call(). [28528] #27881, #22234

Internals

  • Wide-reaching changes to do away with many instances of variable-variables. See #27881 for full list of changes.
  • Eliminate use of extract() within WordPress. #22400
  • Fix curly quotes around numbers when applicable. [28721] #8775
  • Only include relevant post authors in WXR exports. [28731] #20206
  • Append the date to $wp_version in the build output, for nightly packages. [28611] #26751.
  • Update wp_insert_comment() and wp_new_comment() with a check for successful database insert. [28672] #28254
  • Use get_pages() instead of a raw SQL query in get_body_class(). [28696] #28159
  • Pre-populate the selected URL or mailto:<email-address> when “Insert/edit link” is clicked. [28705] #19992
  • Live update the menu item title when the user is editing the “Navigation Label” field. [28707] #23076
  • Deprecate get_all_category_ids(). Suggest get_terms() as a replacement. [28679] #21200
  • Deprecate like_escape() and replace with $wpdb->esc_like(). [28711] #10041
  • Redirect edit.php?post_type=attachment to upload.php to avoid an empty list table. [28729] #27951

Formatting

  • Add new function wp_spaces_regexp() to filter for common whitespace characters. [28708] #27588
  • Treat &nbsp; like whitespace by using wp_spaces_regexp() instead of raw regex. [28716] #27588, [28717] #27587, [28718] #23185
  • In wptexturize(), ensure that texturization does not corrupt contents of HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. elements, HTML comments, and smartcode attributes. Adds a variety of unit tests/assertions. [28727] #27602, #12690, #8912
  • Various updates to wptexturize() in [28719] #19308, [28725] #22823, [28726] #20342
  • Allow user to disable texturization. [28715] #19550

TinyMCE:

  • Update TinyMCE to 4.0.28. [28606] #28391, #27941
  • In iOSiOS The operating system used on iPhones and iPads., fix placing the caret at the bottom of longer posts when the keyboard is open and disable resizing on switching editors and on show/hide of the kitchen sinkKitchen Sink When using the WYSIWYG (What You See Is What You Get) editor in WordPress, you can expand the capabilities to allow more options. This expanded area is called the "Kitchen Sink." row. [28626] #28242
  • Fix problems with undo/redo after resizing an image several times. [28614] #28389
  • Fix saving the editor content on switching from Visual to Text. [28576] #28353

Thanks to @aaroncampbell, @adamsilverstein, @alexander.rohmann, @aliso, @atimmer, @avryl, @azaozz, @boonebgorges, @bramd, @celloexpressions, @clifgriffin, @coffee2code, @danielhuesken, @DavidTheMachine, @DeBAAT, @donncha, @DrewAPicture, @eddiemoya, @edwin-at-studiojoyo.com, @ericlewis, @filosofo, @frank-klein, @Funkatronic, @garhdez, @gauravmittal1995, @gcorne, @georgestephanis, @ghost1227, @grahamarmfield, @harrym, @helen, @iamtakashi, @iljoja, @issuu, @ixkaito, @jackreichert, @JanHenkG, @Jayjdk, @jdgrimes, @jeffstieler, @jeremyfelt, @jesin, @jgadbois, @jjeaton, @jkudish, @joedolson, @johnbillion, @johnjamesjacoby, @johnzanussi, @jtsternberg, @kitchin, @knutsp, @kovshenin, @kpdesign, @kraftbj, @kurtpayne, @kwight, @lancewillett, @lessbloat, @markoheijnen, @mdbitz, @MikeHansenMe, @mikemanger, @miqrogroove, @mrmist, @MuViMoTV, @nabil_kadimi, @nacin, @nd987, @Nessworthy, @netweb, @niallkennedy, @ocean90, @obenland, @pdclark, @pento, @purzlbaum, @rclations, @redsweater, @ruudjoyo, @schoenwaldnils, @scribu, @senlin, @SergeyBiryukov, @sharonaustin, @shaunandrews, @simonwheatley, @sixhours, @slimndap, @solarissmoke, @tar.gz, @tillkruess, @topher1kenobe, @torresga, @UmeshSingla, @winterDev, @wonderboymusic, @wpsmith, @zamfeer, and @duck_ for their coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. contributions!

Thanks to @swissspidy & @designsimply for their help with compiling this post.
RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision. covered: [28528] to [28757]. For the complete list of commits 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., check out the log on Trac.

Interested in joining in? Write or test a patch for 4.0.

#4-0, #week-in-core

In yesterday’s Weekly Developer Chat various minor schema change…

In yesterday’s Weekly Developer Chat, various minor schema change tickets were discussed. We would want to address any changes in as efficient a fashion as possible, and have discussed using the pre_schema_upgrade() function rather than dbDelta(), so we can control the queries more precisely.

Below is a list of the tickets discussed yesterday, along with which tables they affect. Please add any questions, concerns, additional tickets, or +1’s for this work in the comments.

wp_comments

  • comment_author_email#21435 – “wp-includes/comment.php line85 causes slow query due to the non-indexed column” raised by @matsubobo (proposes adding an index to comment_author_email)
  • multiple-column indexes#15499 – “Add an index for get_lastpostmodified query” raised by @simonwheatley (proposes adding an index on post_type, post_status, post_date_gmt and another on post_type, post_status, post_modified_gmt)

wp_options

  • option_name#13310 – “Extend option_name to varchar(255)” raised by @scribu

wp_posts

  • post_name#10483 – Increase field length from 200 to 400. #21212 – Reduce index length to 191 for InnoDB.
  • guid#18315 – “Add an index to the GUID column in the posts table” raised by @alexkingorg
  • post_password – #881 – “Lengthen password field for protected posts” raised by @ScytheBlade1

wp_terms

  • slug#22023 – “Remove UNIQUE for slug in wp_terms” raised by @nacin (related). #16230 – Increase field length from 200 to 400. #21212 – Reduce index length to 191 for InnoDB

wp_term_taxonomy

  • modify existing index#5034 – “Impossible to have duplicate categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. slugs with different parents” raised by @snakefoot (proposes adding an index on term_id, taxonomy, parent)

#4-0, #database

Last Week in WordPress Core

Howdy! This is Last Week in WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. for the week of February 24—March 2! Lots of activity for the past week, which is great as we head into our last few days of alpha. Please join us for daily triage at 1900 UTC to help work through the remaining enhancements scheduled for 3.9.

As a quick note, if you work with our tools in ‘develop’, and are receiving a SELF_SIGNED_CERT_IN_CHAIN error, you can resolve it by running npm config set ca="". For details, check out this npm blog post.

If you want to skim, each section is roughly ordered by an important and/or interesting factor.

Editor

  • Add the ability to drag and drop files directly onto the editor. Upon drop, the media manager will open, and file will begin to upload. [27343] #19845
  • Throttle scrolling of the main window when the editor is active and is being scrolled with the mouse wheel or a trackpad. [27368]. Expect some major tweaks here, though; see #27013.

Templating

  • Introduce HTML5 gallery support. When a theme supports HTML5 galleries via add_theme_support( 'html5', 'gallery' ), figure, and figcaption will be used instead of definition list markup. [27302] #26697
  • Add a 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 remove or rename page templates for a theme. This does not yet handle adding page templates. [27297] #13265
  • Move comment-reply.js to the footer. While it can function before the page is loaded, it works by moving the comment form, which is usually toward the bottom of the page. Please report any contraindications on the ticketticket Created for both bug reports and feature development on the bug tracker.. [27303] #12641
  • Return 404 when querying author’s posts who is not a member and has no posts on the site. [27290] #20601
  • Make get_adjacent_post() wrap a new WP_Adjacent_Post object that uses WP_Query. [27285] [27286] #26937
  • Add exclude and include arguments to wp_list_authors(). [27274] #9902

Internals

  • Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site: Introduce get_site_by_path() and further rewrite the site detection process for multisite. This makes it so that a sunrise 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 could do much of its work by adding filters, if those are even needed. [27359] #27003
  • Database: Use MySQLi for WordPress development versions, regardless of PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher version, to increase testing footprint. There’s also a constant for testing purposes. [27257] [27278] #21663
  • Plugin 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.: Introduce doing_filter() and doing_action() to identify 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. in progress. You can also use this with to identify a hook that has completed. For more, see [27294] #14994.
  • Formatting: Strip backslashes, not just forward slashes, from untrailingslashit(). trailingslashit() will now remove any forward or backslashes from the end of a string before appending a forward slash. [27344] #22267
  • Date/Time: Allow current_time() to accept a date format string, adding to timestamp and mysql. [27259] #21653
  • Updates: During core upgrade, copy wp-includes/version.php over last, to avoid an installation failing with the new version.php in place. [27336] #25860
  • Rewrite API: Allow rewrite endpoints to specify a query variable name. [27327] #20905
  • Cache API: Revert [27115] and let cache backends handle the stripping of spaces in cache keys as necessary. microtime() returns greater precision than microtime(true). [27300] #27000, #23448, #26903, #14485
  • Query: Add a $default argument to get_query_var() and WP_Query::get(). Helpful when working with endpoints. [27304] #16471
  • Comment Query: Allow user_id to be an array of IDs in WP_Comment_Query. [27258] #27064
  • Users: Make the user arguments for get_edit_profile_url() and get_dashboard_url() optional, defaulting to the current user. [27260] [27265] #16686

External Libraries

  • Update the Masonry 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/. library to version 3. [27271] #25351
    • The new script handle is masonry. The old jquery-masonry handle is the official shiv that sits on top of the v3 library to be backwards compatible with v2 usage. While v3 no longer depends on jQuery, a theme or plugin may have been implicitly loading jQuery though Masonry, rather than additionally declaring it as a dependency for themselves.
    • Themes should switch to masonry and declare jQuery as a dependency on their own if they need it.
    • Upgrade guide on Masonry’s site, with the exception that, for core, we continue to include imagesLoaded.
  • Upgrade Plupload to 2.x (2.1.1) [27316] #25663
  • Update the Root Certificate bundle used for SSLSSL Secure Sockets Layer. Provides a secure means of sending data over the internet. Used for authenticated and private actions. communication by WP_HTTP from the latest Mozilla release NSS. [27307] #27017

Developer Tools

  • Add grunt-patch-wordpress for applying patches directly from TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.. Mapped to grunt patch, which declares usage. Requires npm install to install. [27299] #27023
  • Add JSHint to Travis CI config. [27267] #26446

For the complete list of commits 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., check out the log on Trac. Interested in joining in? Write or test a patch for 3.9.

Thanks to @adamsilverstein, @andy, @avryl, @bassgang, @bootsz, @chrisscott, @danielbachhuber, @DrewAPicture, @enej, @ericlewis, @ericmann, @ethitter, @evarlese, @garyc40, @GaryJ, @gcorne, @georgestephanis, @GregLone, @helen, @iamfriendly, @Ipstenu, @jackreichert, @jeremyfelt, @johnjamesjacoby, @jorbin, @knutsp, @kovshenin, @kpdesign, @leewillis77, @markjaquith, @mattheu, @mboynes, @mitchoyoshitaka, @mjbanks, @mordauk, @morganestes, @nacin, @nicolealleyinteractivecom, @obenland, @ocean90, @patricknami, @pento, @pross, @rickalee, @salcode, @scribu, @SergeyBiryukov, @shelob9, @siobhyb, @solarissmoke, @xsonic, @stephcook22, @theorboman, @tivnet, @TobiasBg, @willmot, @wonderboymusic, @xknown, and @yoavf for their help this week!

#3-9, #week-in-core

Proposed Trac component reorganization

Warning, this long. tl;dr: I propose a reorganization of our TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. components. 34 top-level components with two dozen subcomponents. New tree at the bottom. First, an overview of some of our problems.
Continue reading

#components, #trac