Dev Chat agenda, July 12, 2023

The next weekly WordPress developers chat will take place onย Wednesday, July 12, 2023 at 20:00 UTCย in theย coreย channel ofย Make WordPress Slack. All are welcome.

1. Welcome and housekeeping

Summary from the Dev Chat on June 5, 2023 โ€“ props to @estelaris

2. Announcements

WordPress 6.3 Beta 4 โ€“ thanks to all involved!

GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ 16.2 โ€“ expected to be released on July 13, 2023.

3. Highlighted posts

A Week in Core, July 3 to July 10, 2023 โ€“ props to @audrasjb

Letโ€™s take a look at what changed onย TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.ย between July 3 and July 10, 2023. Welcome to the 11 new contributors during this period too!

  • 80 commits
  • 100 contributors
  • 77 tickets created
  • 10 tickets reopened
  • 58 tickets closed

Phase 3 โ€“ A reminder that online comments are invited for the Phase 3 of the Gutenberg Project relating to Block library and a few important development APIs and the Media library and media flows, Real time collaboration, and Asynchronous workflows. New: Admin Design. More coming, follow the Phase 3 tag.

Developer Blogblog (versus network, site) โ€“ Whatโ€™s new for developers July 2023

4. Forthcoming release updates

Next major WordPress release: 6.3

6.3 Beta 4 came out on July 11, 2023 and is available for testing. Awareness on a few items below including remaining 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. scrubs, Editor Tasks to do, live product demo date. 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, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. are starting to be produced and published too.

Save the date for a WordPress 6.3 live product demo, scheduled for Thursday, July 20, 2023, at 16:00 UTC (Zoom link).

Stay in theย 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ย with 6.3:

Future major WordPress release: 6.4

WordPress 6.4 Development Cycleย 

5. Tickets or Components help requests

Please add any items for this part of the agenda to the comments. If you can not attend dev chat live, donโ€™t worry, include a note and the facilitator can highlight a ticketticket Created for both bug reports and feature development on the bug tracker. if needed. This part of the agenda will focus on items for 6.3.

6. Open floor

If you have any additional items to add to the agenda, please respond in the comments below to help the facilitator highlight them during the meeting.

#agenda, #dev-chat

X-post: Announcing the Inaugural Cohort of the WordPress Contributor Mentorship Program!

X-comment from +make.wordpress.org/community: Comment on Announcing the Inaugural Cohort of the WordPress Contributor Mentorship Program!

New in 6.3: Rollback for failed manual plugin and theme updates

Should the manual 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. or theme update process fail, the rollback feature will automatically restore the previously installed version to ensure the website remains available to its users.

The Rollback feature originated in #51857.

When updating a plugin or theme, the old version of the plugin or theme is moved to a wp-content/upgrade-temp-backup/plugins/PLUGINNAME or wp-content/upgrade-temp-backup/themes/THEMENAME folder.

The reason we chose to move instead of zip, is because zipping/unzipping are resources-intensive processes, and could increase the risk of failure on low-end, shared hosts. Moving files, on the other hand, is performed instantly and wonโ€™t be a bottleneck.

Moving is accomplished by means of the new move_dir() function, included in WordPress 6.2. PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higherโ€™s rename() is used for this with a fallback to copy_dir(), a recursive file copy used by CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. for a long time. move_dir()uses theย ::move()method for theย WP_Filesystem_Direct,ย WP_Filesystem_FTPext,ย WP_Filesystem_ftpsockets, andย WP_Filesystem_SSH2ย filesystem abstractions and has a fallback toย copy_dir(). Find out more in theย move_dir()ย devnote.

If the update process fails, then the backup we moved in the โ€œupgrade-temp-backupโ€ folder is restored to its original location. If the update succeeds, then the backup is deleted.

Two new checks were added in the Site Health screen:

  • Check to make sure that the backup folders are writable.
  • Check there is enough disk-space available to safely perform updates.

To avoid confusion: The โ€œupgrade-temp-backupโ€ folder will NOT be used to โ€œroll backโ€ a plugin/them to a previous version after a successful update. You can use the various rollback plugins for this.

The โ€œupgrade-temp-backupโ€ folder will simply contain a transient backup of the previously installed plugin or theme getting updated, and as soon as the update process finishes, the folder will be emptied.

When a rollback occurs, the user should simply see that there is an update pending and their site should still be working.

The simplest explanation of what results in a manual update failure and a rollback is anything that returns aย WP_Errorย fromย WP_Upgrader::install_package().

  1. A bad request, something missing the source or destination of the update.
  2. Aย WP_Errorย returned from theย upgrader_pre_install,ย upgrader_source_selection,ย upgrader_clear_destination,ย upgrader_post_installย filters.
  3. An empty download package.
  4. A failure when moving the moving the installedย plugin/theme to the temp-backup directory.
  5. If the remote source destination folder not able to be cleared and something is there.
  6. Unable to create remote destination folder.
  7. Unable to move/copy the the update to the remote destination.

Updated August 2, 2023 @afragen

The above encompasses parts 1 and 2 of the Rollback feature. Part 3, hopefully for WordPress 6.4, is the same process but for automatic updates. Specifically, Rollback part 3 checks to see that the updated plugin does not cause a PHP fatal error when activated. If it does, this error is captured and the previously installed version is restored.

All of the Rollback feature, parts 1-3, are included for testing in the Rollback Update Failure feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins.

Props @costdev for peer review, @stevenlinx and @desrosj for review.

#6-3, #dev-notes, #dev-notes6-3, #props

Performance Chat Summary: 11 July 2023

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

  • Welcome to our new members ofย #core-performance
  • WP 6.3ย 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 is today
  • Working on a WordPress 6.3 performance highlights post โ€“ please add suggestions to theย documentย by July 21
  • Work continues onย 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, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.ย for 6.3

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones

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 & CSSCSS Cascading Style Sheets.

Link to roadmap project

Contributors: @mukesh27 @10upsimon @adamsilverstein @westonruter

  • @10upsimon Enhancing the WP Scripts 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. with a loading strategy:
    • A draft 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, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. is in progress and I believe almost ready to be published, huge shout out toย @flixos90ย @joemcgillย andย @westonruterย for their invaluable contributions thus far
    • Iโ€™ve reached out to the documentation team around how to submit changes to Dev Hub pages, and have begun drafting potential documentation updates that will need to happen that are exclusive of the automated updates, with the goal of having those ready for review by latest mid week next week. Thanksย @stevenlinx for pointing me in the right direction.
    • Worth noting that auxiliary documentation efforts (docs not auto generated from code) have reduced somewhat following removal of deferred inline scripts
  • @spacedmonkey Created this ticket, for remove hardcoded style tags https://core.trac.wordpress.org/ticket/58775
  • @westonruter Iโ€™ve started exploring where script strategies can be used in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. and GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/. I donโ€™t have a further update just yet but hope to have either a doc or set of tickets by next week.
    • @joemcgill We should take a look at default themes too. Let me know how I can best support
    • @westonruter Yes, I mean to include that in core
    • @spacedmonkey I wonder if it could be used in the performance lab and 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. checker plugins as well.
    • @westonruter Some of the changes may make sense as a module in PL first
  • @10upsimon Although, I did do a performance comparison on a draft PR thatย @thekt12 had added based onย this slack discussionย  and followed up in the thread, we agreed to pause on this for now and re visit it shortly with a broader script tree.

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27 @swissspidy

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger @mukesh27

  • @mukesh27 We are working on the last issue for Milestone 2 for theย Plugin Checker. Once complete weโ€™ll be moving onto further QA/Testing and remediating over this week and next. Progress can be seen on theย GitHub repoย here. Feel free to take a look and leave any thoughts/ideas you may have in the repo. Thanks!

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

  • No updates this week

Open Floor

  • @adamsilverstein I opened a new ticket to consider adding lazy loading to oEmbed iframes:ย https://core.trac.wordpress.org/ticket/58773ย โ€“ although iframes are lazy loaded by default now, oEmbeds are not included in that
    • @spacedmonkey Could lazily loading iframes have issues around tracking? Some embeds, like say a video provide, like 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. to load, so they can have view counts.
    • @westonruter Embed iframes wouldnโ€™t be used for tracking, I wouldnโ€™t think. If the video is never played then the view count shouldnโ€™t increase, right? So same as if it wasnโ€™t loaded.
    • @adamsilverstein possibly, they would no longer load if they are off screen and never scrolled near the viewport
    • @spacedmonkey What if a video is auto playing? You could build your website for your youtube channel to have a post blogblog (versus network, site) for each video. In that case you would want it to autoload play
    • @westonruter Note that autoplay with audio doesnโ€™t work on mobile
    • @spacedmonkey Autoload is only really a problem for ads. Autoload for a site where the user wants to see the video is differnet. On youtube, I would want to a video to autoload when I click on the video.
    • @westonruter There may need to be 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. or documented way to turn off lazy load. However, if the video intends to autoplay then it should be in the first viewport, and thus it shouldnโ€™t get loading=lazy anyway or it would load right away anyway. I donโ€™t think we should worry about the case of an autoplay video being lazy-loaded that isnโ€™t in the first viewport.
    • @spacedmonkey The embed code from youtube doesnt have lazy load attribute. Why is that the case?
    • @adamsilverstein there is an existing filter that can be usedย wp_iframe_tag_add_loading_attrย 
    • @westonruter Thatโ€™s a good question. I have been looking into that but havenโ€™t found a reason yet.
    • @spacedmonkey Vimeo also doesnโ€™t have lazy loading attributes. I feel like the embed provider wants to have them lazy load, they would.
    • @adamsilverstein weโ€™ll need to test every embed type of course. iโ€™d love if that were true, but providers arenโ€™t doing that
    • @westonruter These video providers predate the introduction of loading=lazy. Could be they just havenโ€™t added it yet. Better for core to add anyway, because then we can omit from videos in the first viewport.
    • @spacedmonkey I think this functionality should have a merge prospal and get feedback from the community. I know for a fact, I have using video providers that use iframe and needed the video to load to mark as an impression. Having a filter is all good. But that means that video provide X needs to create a plugin to use the video to opt out.
    • @westonruter Why should an impression be given if the video is never in the viewport?
    • @adamsilverstein we already announced and discussed oEmbeds would be lazy loaded in this post โ€“ย https://make.wordpress.org/core/2021/02/19/lazy-loading-iframes-in-5-7/ย we later reverted the change due to technical issues. lets start by discussing the tracking concerns on the tracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. ticket
    • @spacedmonkey Can we explore this idea as a module in the performance lab? That way we can have people test this functionality.
    • @adamsilverstein Absolutely, great idea! Here is the code needed to add the same functionality in a plugin โ€“ย https://gist.github.com/adamsilverstein/e280062004c38629fc029b6d267bff91
    • @spacedmonkey Being able to test things like this is the point of the performance lab plugin. We can get feedback from the community that was as well.

Our next chat will be held on Tuesday, July 18, 2023 at 15:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Agenda: 11 July 2023

Here is the agenda for this weekโ€™s performance team meeting scheduled for July 11, 2023 at 15:00 UTC.

  • Announcements
    • Welcome to our new members of #core-performance
    • WP 6.3 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 is today
    • Working on a WordPress 6.3 performance highlights post โ€“ please add suggestions to the document by July 21
    • Work continues on 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, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. for 6.3
  • Priority projects
  • Open floor

This meeting happens in the #core-performance channel. To join the meeting, youโ€™ll need an account on the Make WordPress Slack.

#agenda, #meeting, #performance, #performance-chat

A Week in Core โ€“ July 10, 2023

Welcome back to a new issue ofย Week inย CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Letโ€™s take a look at what changed onย TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.ย between July 3 and July 10, 2023.

  • 80 commits
  • 100 contributors
  • 77 tickets created
  • 10 tickets reopened
  • 58 tickets closed

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

Code changes

Administration

  • Adjust the โ€œNo private directive present in cache control when user not logged inโ€ test so the assertions wonโ€™t fail if the headers donโ€™t contain a cache-control key at all โ€“ #21938
  • Administration: CSSCSS Cascading Style Sheets. selector correction for list table checkboxes โ€“ #21516

Boostrap/Load

  • Incorrect condition in wp_check_php_mysql_versions() โ€“ #58201

Build/Test Tools

  • Prevent 404 errors in the E2E tests โ€“ #58777
  • Suppress E2E test suite 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/ notifications โ€“ #58779
  • Fix dynamic property deprecation warning in object cache drop-in โ€“ #58736
  • Fix incorrect hook being used to separate Server-Timing metrics in performance tests โ€“ #58674

Bundled Themes

  • Twenty Fifteen: Reintroduce HTML5 Shiv โ€“ #56699
  • Twenty Seventeen: Reintroduce HTML5 Shiv โ€“ #56699
  • Twenty Seventeen: Use wp_register_script() to register HTML5 Shiv script โ€“ #56699
  • Twenty Thirteen: Reintroduce HTML5 Shiv โ€“ #56699
  • Twenty Twenty-One: Add b and strong elements to editor styles โ€“ #58383
  • Twenty Twenty-One: Replace the experimental link color theme support โ€“ #58702
  • Twenty Twenty-Three: Add a border to Quote 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. โ€“ #57506
  • Twenty Twenty-Three: Allow changing Site Title font size in Marigold and Whisper styles โ€“ #57971
  • Twenty Twenty-Three: Fix Separator Block default styling โ€“ #57667
  • Twenty Twenty: Fix left margin in Latest Posts & Latest Comments blocks โ€“ #58396

Coding Standards

  • Add missing newline at the end of wp-admin/user.php โ€“ #58194
  • Use strict comparison in wp-includes/class-wp-simplepie-file.php โ€“ #57839
  • Use strict comparison in wp-includes/class-wp-tax-query.php โ€“ #57839
  • Use strict comparison in wp-includes/class-wp-user-query.php โ€“ #57839
  • Use strict comparison in wp-includes/class-wp-user.php โ€“ #57839

Docs

  • Correct the formatting of various 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. documentation โ€“ #57840
  • Docblockdocblock (phpdoc, xref, inline docs) correction in WP_REST_Attachments_Controller::upload_from_data() โ€“ #57840
  • Document the return value of wp_check_php_version() using hash notation โ€“ #57840
  • Fix incorrect type for $crop param is various WP_Image_Editor classes and methods โ€“ #58271
  • Replace multiple single line comments with multi-line comments โ€“ #58459
  • Update link to MovableType docs (on Internet Archive) โ€“ #58760
  • Update link to MovableType documentation โ€“ #58760
  • Use third-person singular verbs in various function descriptions of load.php, as per docblocks standards โ€“ #57840

Editor

  • Enqueueย commandsย package styles โ€“ #58667
  • Ensure blocks registered within parent theme are available when child themeChild theme A Child Theme is a customized theme based upon a Parent Theme. Itโ€™s considered best practice to create a child theme if you want to modify the CSS of your theme. https://developer.wordpress.org/themes/advanced-topics/child-themes/ is activated โ€“ #57566
  • Fix font paths in iframed editor โ€“ #58672
  • Fix layout of no-js state in site editor โ€“ #56228
  • Normalize paths in register_core_block_style_handles() โ€“ #58711
  • Typo correction in Author block template description
  • adds deprecation for deleted block_core_navigation_submenu_build_css_colors function โ€“ #58623
  • fix comment indentation โ€“ #58586
  • opt out of Navigation fallback โ€“ #58750
  • rename sync_status and move it to top level โ€“ #58677
  • update npm packages with 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 blessed tasks โ€“ #58701
  • update npm packages with bug fixes and blessed tasks โ€“ #58745
  • update string incorrectly marked for translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. in Chrome โ€“ #58716
  • update template titles in browse mode โ€“ #58713

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.

  • Ensure wp_tempnam() does not produce file names longer than 255 characters as this is the limit on most filesystems โ€“ #35755

General

  • Compare values as strings in WP_List_Util::filter() and ::sort_callback() โ€“ #57839
  • Fix an error introduced in [56179]
  • Increase the minimum supported version of PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher to 7.0.0 โ€“ #57345
  • Revert strict comparison in WP_List_Util for now โ€“ #57839
  • add nonce for block theme preview activation โ€“ #58712
  • fix botched file move in r56199 โ€“ #58712

HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API

  • Fix a fatal error when processing malformed document with unclosed attribute โ€“ #58637

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

  • Declare a few default parameters in WP_Http_Curl and WP_Http_Streams โ€“ #52622

Help/About

  • Add Help text for Rollback feature โ€“ #58199

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.

  • Move translator comments inside sprintf for tagline field description โ€“ #57675

Media

  • Avoid programmatically created images within post content from incorrectly receiving fetchpriority="high" โ€“ #58235
  • Ensure custom 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. image 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.) supports loading optimization attributes โ€“ #58680
  • Ensure that large images before the main 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 are counted towards lazy-loading threshold โ€“ #58635
  • Ensure that the image 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. supports loading optimization attributes โ€“ #58704
  • Fix responsive views in image editor โ€“ #58692

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

  • Check if the gmt_offset value is numeric in sanitize_option() โ€“ #57728

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/

  • Correct some filter docblocks โ€“ #57752

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.

  • return existing autosave after saving with unchanged data โ€“ #58739

Themes

  • Improved caching in wp_theme_has_theme_json() โ€“ #58758

Users

  • Remove password reset links when the feature is not allowed for a specific user โ€“ #58194

Props

Thanks to the 100 (!) people who contributed to WordPress Core on Trac last week:

@audrasjb (22), @costdev (21), @poena (11), @mukesh27 (10), @sabernhardt (10), @sergeybiryukov (9), @spacedmonkey (8), @afercia (5), @wildworks (4), @peterwilsoncc (4), @flixos90 (4), @aristath (4), @thekt12 (3), @oglekler (3), @ramonopoly (3), @westonruter (3), @jrf (2), @azaozz (2), @mrinal013 (2), @kebbet (2), @nithins53 (2), @robinwpdeveloper (2), @joemcgill (2), @hellofromTonya (2), @masteradhoc (1), @knutsp (1), @thunderdw (1), @samiamnot (1), @JavierCasares (1), @dingo_d (1), @chanthaboune (1), @felipeelia (1), @ntsekouras (1), @kraftbj (1), @tahmina1du (1), @cshark (1), @garyjones (1), @antonvlasenko (1), @Cybr (1), @adi3890 (1), @sjoerdlinders (1), @shailu25 (1), @alvitazwar052 (1), @shuvoaftab (1), @ryelle (1), @hasanmisbah (1), @hrdelwar (1), @dhrupo (1), @dmsnell (1), @bhi3315 (1), @dlh (1), @kafleg (1), @david.binda (1), @jeremyfelt (1), @shuvo247 (1), @ndiego (1), @hztyfoon (1), @ironprogrammer (1), @ocean90 (1), @marybaum (1), @mikeyzm (1), @vivekawsm (1), @doems (1), @andraganescu (1), @dhrumilk (1), @mikinc860 (1), @zoonini (1), @akrocks (1), @nidhidhandhukiya (1), @syamraj24 (1), @jacknotman (1), @jomonthomaslobo1 (1), @nithi22 (1), @scruffian (1), @Toro_Unit (1), @eric.7186 (1), @andrewserong (1), @get_dave (1), @mikeschroder (1), @Levdbas (1), @aaronrobertshaw (1), @iamfarhan09 (1), @glendaviesnz (1), @johnbillion (1), @mrfoxtalbot (1), @jeroenrotty (1), @Mamaduka (1), @mujuonly (1), @afragen (1), @pavanpatil1 (1), @guillaumeturpin (1), @nkeller15 (1), @mikachan (1), @Rahmohn (1), @sakibmd (1), @haritpanchal (1), @isabel_brison (1), @whaze (1), @leprincenoir (1), and @Clorith (1).

Congrats and welcome to our 11 (!) new contributors of the week:ย @thunderdw, @tahmina1du, @cshark, @vivekawsm, @doems, @mikinc860, @akrocks, @jacknotman, @jomonthomaslobo1, @eric7186, @iamfarhan09ย โ™ฅ๏ธ

Core committers: @audrasjb (39), @isabel_brison (11), @sergeybiryukov (9), @flixos90 (5), @johnbillion (4), @davidbaumwald (3), @peterwilsoncc (2), @joedolson (2), @azaozz (2), @spacedmonkey (2), @adamsilverstein (1).

#6-3, #core, #week-in-core

Block Library

This is part of the Phase 3: Collaboration roadmap. The main projects are Real-Time Collaboration, Workflows, Revisions, Media Library, Block Library, and Admin Design.

Introduction

Now that blocks are able to model and express an entire site, itโ€™s important to improve the way they can be organized, listed, and installed by users. The overall goal is to improve how 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. management works outside the editors โ€” for example, by allowing the disabling of blocks globally across a site, not just as user preferences.

Wall of block icons

We should connect functionalities that might already exist but are not fully developed as user features yet. For example, the relationship between single blocks, post formats, and custom post types. Thereโ€™s code built in that tries to coordinate what initial block to show on the editor canvas by checking whatโ€™s the default post format (paragraph for standard posts); if the default format was Image a user would see an image block placeholder when creating a new post instead of an empty text prompt. This kind of customization is currently a bit obscure and could be more powerful if it allowed to more easily configure default block type across post types. It should also connect with other workflows like โ€œquick postโ€ interfaces in the dashboard.

It also means introducing more robust permission handling across the various capabilitiescapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability). (block registration, locking, etc) so administrators can define what blocks are available for different user roles (or even what capabilities of individual blocks are to be exposed). The fact that theme.json files are inherently composable should allow for more granular handlings of capabilities in a systematic way. For example, consider a fictional author.theme.json that sets, disables, and controls what tools and settings are available for authors over the root config file.

There are a couple important block API items to list that can have consequences on user flows as well. One example is to introduce an auto-insert mechanism so that plugins can better interact with the site document (and block trees) in a way that respects user control.

Furthermore, as part of the ongoing work on patterns, itโ€™s time to start formalizing a connection between blocks and meta fields to empower building flexibility while retaining user clarity. For example, it should be possible for an administrator to set up a custom post typeCustom Post Type WordPress can hold and display many different types of content. A single item of such a content is generally called a post, although post is also a specific post type. Custom Post Types gives your site the ability to have templated posts, to simplify the concept., powered by a block pattern, where each individual block has content attributes connected to a specific 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. field rather than post content. All could be accomplished within the block editor interface.

Finally, itโ€™s also important to improve how installing blocks from the directory works, how we handle missing block types and reinstallation, how themes and patterns could reference third party blocks, etc. This also implies better visualizations of blocks introduced by larger plugins.

Scope

This is a summary of the broad tasks we need to look into:

  • Add a section next to, or under, plugins to manage blocks globally. This means expanding the current block manager to allow enabling and disabling blocks across a site.
  • Introduce more robust permission handling so administrators can define what blocks are available for different user roles.
  • Create auto-insert 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 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. flows for block types. This is a developer tool with user flow implications.
  • Improve the mechanics of the block directory with better visualization of blocks bundled in plugins and better flows for themes and patterns using third party blocks on templates.
  • Develop API integrations for mapping attributes to custom fields using the editor interface. The idea being blocks can provide a native UIUI User interface for managing and introducing meta data through its attributes layer.
  • Allow managing categories for saved patterns. Expose other pattern APIs, like block type or parent dependencies in the user flows.
  • Develop the concept of โ€œpartially synced patternsโ€. These allows the design layout and the style properties to remain global while the content can be locally customized.
  • Extensive application of theme.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. partials on groups of blocks (control settings and styles on specific templates, parts, patterns). Explore full theme.json settings objects on a per user role.

Get Involved!

Join the conversation if you have thoughts or feedback about ways to improve the workflows around blocks.

#gutenberg, #phase-3

Editor Chat Agenda: 12 July 2023

Facilitator and notetaker:ย @paaljoachim

This is the agenda for the weeklyย editor chatย scheduled forย Wednesday, July 12 2023, 03:00 PM GMT+1. This meeting is held in theย #core-editorย channel in the Making WordPressย 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/.

Help test WordPress 6.3 Beta 4.
Whatโ€™s new in Gutenberg 16.1? (June 29)
Gutenberg 16.2 RC3 is available for testing.
Final version of GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ 16.2 will be released Wednesday.

Key project updates:

Task Coordination.

Open Floor โ€“ extended edition.

If you are not able toย attendย the meeting, you are encouraged to share anything relevant for the discussion:

  • If you have an update for the main site editing projects, please feel free to share as a comment or come prepared for the meeting itself.
  • If you have anything to share for the Task Coordination section, please leave it as a comment on this post.
  • If you have anything to propose for the agenda or other specific items related to those listed above, please leave a comment below.

#agenda, #core-editor, #core-editor-agenda, #meeting

Media Library

This is part of the Phase 3: Collaboration roadmap. The main projects are Real-Time Collaboration, Workflows, Revisions, Media Library, Block Library, and Admin Design.

Introduction

The media library has been an area of slow iteration during the first phases of the 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. editor. Itโ€™s time to put more focus on it. The main goals are to expand the media management capabilitiescapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability)., unify the block edit and single media interfaces, and improve upon the major media flows.

Screenshot of the media inserter panel in the editor.

On the management side, itโ€™s time to look at categorization and tagging, better handling of attached media, design improvements to the library views and filtering. Several important functionalities are already present but not presented in the best way. For example, media attachment functionality (items anchored to a specific post) is often hard to discover, the interface is not the most intuitive, and the connection doesnโ€™t necessarily carry through other editing flows in a clear way. For larger teams, media ingestion can often be an entirely separate process from writing posts. The ability to bulk attach media files and connect them to the relevant content pieces is thus an important part of the collaborative process.

We should also revamp the image editing interface and align with the current block editor tools. Cropping tools in particular need to be unified and further improved. Iterate on how users can visualize and toggle between different thumbnails, while reducing the burden on picking the right file size (WordPress should determine that for you at runtime). Review default thumbnail sizes to accommodate current screen sizes distribution. It should also be possible to set a non-destructive duotone effect directly in the library. Itโ€™d be nice to bring UIUI User interface tools like focus point control to the library flows, so that media objects can store that information and be leveraged automatically when inserting on a cover block, or when using an image on a cropped featured media container.

When managing the media library, it should be easy to check and keep track of attribution. As we look into expanding the presence and touch points of Openverse, itโ€™d be interesting to see how contributions to the commons could work directly from a userโ€™s WordPress install. Another area to look at is improving handling and presentation of other media types (audio, video, files) and their connection with blocks and the block APIs. We should resurface work on a native Playlist block, ideally powered by the Interactivity API.

Finally, we should take a look at the publishing flows for media and format driven posts (where only one block type is present) to allow more expressive freedom.

Scope

  • Tackle design improvements of the media library elements and see about a path to migrate to wordpress/data and newer UI components. Make it even easier to reuse and connect the media experience anywhere on the adminadmin (and super admin) and blocks plugins.
  • Look into adding categories and tags support. Explore better browsing organization (for example, date headings and other improvements to the filtering UI).
  • Improve inline and freeform cropping across block editor and standalone image editing. Connect cropping variations with defining custom aspect ratios across the block UI.
  • Explore how patterns could be incorporated into media flows. For example, being able to preview a selection of media (or all attached media) within different media patterns quickly.
  • Connect with Workflows: for example, to require certain steps, such as adding a caption, attribution, alt text, or prevent things like publishing with external images.
  • Media flows and block integration should be excellent. For example, make blocks aware of attached media so that inserting an image block could automatically display unused media or allow an author to cycle through those without opening the full media library or browsing through an entire collection.
  • Expose relevant media tools and actions in the command center.
  • Improve presentation of media in other editing contexts, like showing small media previews in the block list view.
  • Incorporate featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts. in the canvas of the post editor when the single template uses a featured image block (this is a lingering task from the site and post editor interface work).
  • Look at the possibility of supporting other featured media types beyond images.
  • Improve upon bulk editing operations, including attaching already uploaded media to a post type.
  • Explore treating focal point as image data and make it available to plugins and blocks.
  • Allow operations like drag to upload media anywhere on the editor โ€” and then maybe anywhere on the admin.
  • Follow through on updates to the attachment theme template and single image expand functionality.
  • Review outstanding tasks on main media blocks (image, gallery, cover, video, audio, file, etc) for enhancements and 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.

Get Involved!

What other improvements would you like to see around the media library experience?

#gutenberg, #phase-3

Dev Chat Summary: July 5, 2023

The notes from the weekly WordPress developers chat which took place on Wednesday July 5, 2023 in theย coreย channel ofย Make WordPress Slack.

Key links

Announcements

  • WordPress 6.3 Beta 3: 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. 3 is available for testing.
  • Breaking news: Dropping support for PHP 5: With 6.3, WordPressโ€™s minimum supported version will be PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher 7.0.0.

Highlighted posts

  • A Week in Core โ€“ July 3, 2023ย โ€” Propsย @audrasjbย for pulling the last couple of weeks together! Hereโ€™s an overview of updates in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between June 19 and July 3, 2023:
    • 88 commits
    • 143 contributors
    • 87 tickets created
    • 19 tickets reopened
    • 115 tickets closed
    • and 18 new contributors in this periodย 

Updates on forthcoming releases

WordPress 6.3 โ€” nextย major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope.

Beta 4 for the 6.3 release is next Tuesday, July 11, 2023

Stay in the 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 with 6.3 by checking out:

Components updates

Nothing to report.

Open Floor

@sabernhardt requested help with #58251 to move it forward.

@wesatintellitonicย asked if โ€œpartially syncedโ€ patterns were still in the works for 6.3, or has that been punted to a later release? There have been 2 discussions about the topic on issue #48458 and PR #50649.

@lakshmananphp are footnotes supposed to stay at the bottom of the page or be movable? Since inserted footnotes are a 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., they appear to be movable. More information on this discussion PR #51201.

#6-3,ย #dev-chat,ย #summary

#meeting