Over the past few months, we’ve been working towards one of the most wide-reaching API 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.’s to be suggested for core Core is the set of software required to run WordPress. The Core Development Team builds WordPress. inclusion, apart from the REST 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/.. It has the potential to touch nearly every area of WordPress that deals with forms and fields. The Fields API is nearly there, and we’re seeking more feedback on a number of areas we need to tie down before we go into the official proposal stage for core inclusion.
What is the Fields API?
We just published a specification for the Fields API last week and we’re seeking constructive feedback on that now. Please take a moment to read about it, ask questions, and voice your concerns with us so we can address those things before we go to the next official stage.
There’s also some helpful docs which include Terminology, Registration of fields, and example code.
What can you do with the Fields API right now?
We’ve put together a number of implementations to show the potential of what the Fields API can accomplish inside of core. Each implementation is an example of what could end up in WordPress core, should the Fields API itself be merged.
- Edit User screen (@sc0ttkclark, @technosailor)
- Our internal implementation of the Edit User screen replaces core’s entirely using the Fields API.
- Here’s a code example to add more fields (and sections and controls) to the Edit User screen
- Backwards compatibility hooks 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.
- To-do: Further custom markup and/or styling to match uniform layout
- Edit Post screen (@sc0ttkclark, @brentvr)
- Our internal implementation of the Edit Post screen will replace core’s entirely using the Fields API, we only have support for adding new sections / controls right now
- To-do: Register sections / controls based on what’s on the Post Editor screen currently (@brentvr is working on this now)
- To-do: Add additional output types (no meta 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, etc)
- To-do: Backwards compatibility hooks
- Term Add / Edit (@sc0ttkclark, @technosailor)
- Our internal implementations of the Add Term and Edit Term screen replaces core’s entirely using the Fields API
- Backwards compatibility hooks
- Comment Edit (@sc0ttkclark)
- Our internal implementation of the Edit Comment screen will replace core’s entirely using the Fields API, we only have support for adding new sections / controls right now
- To-do: Register sections / controls based on what’s on the Comment Editor screen currently
- To-do: Add additional output types (no meta box, etc)
- To-do: Backwards compatibility hooks
- Settings Pages (@sc0ttkclark, @technosailor)
- Our internal implementation of the Settings page screens replaces core’s entirely using the Fields API
- We currently have partial implementations of the following Settings pages
- We are working on adding these
- To-do: Discussion
- To-do: Media
- Register Sections and Fields to Settings API based on what’s been registered to the Fields API
- Settings API calling Fields API for config and rendering (not testable, functions can’t be overridden in wp-admin (and super admin)/includes/template.php)
- To-do: Custom control types for some of the advanced / unique inputs
- Widget 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. Forms (@nicholasio, @sc0ttkclark)
- Our internal implementation of the Widget forms will integrate with WP_Widget to allow form fields to be registered for widgets and rendered/saved automatically without the custom code every widget ends up needing currently.
- To-do: WP_Widget integration (@nicholasio is working on this now)
- Nav Menu Items (@diddledan, @sc0ttkclark)
- Our internal implementation of the Nav Menu Items overrides the core Walker class used for building the Nav Menu Item forms, and uses the Fields API to output registered controls.
- To-do: More compatibility work for CSS Cascading Style Sheets.
- To-do: Look into Customizer 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. integration
- To-do: Getting/saving values for nav menu item fields
- We do not currently have an implementation for this yet, but one was proposed by @wpsmith, and we are seeking additional help from anyone looking to make this happen
- To-do: Add sections and controls to Media Edit
- To-do: Add sections and controls to Media Modal Add/Edit
- REST API
- We currently have limited direct integration with the REST API, but we’d like to work with the REST API team towards implementing REST API options and building in addition configurations the REST API can consume for it’s endpoint(s)
- register_rest_field integration
Possible Roadmap to Merge
Here’s an example of how Fields API could eventually be merged into core, along with other implementations.
- Release 1: Merge Fields API into core
- Release 2: Merge Implementation 1 into core
So each release could focus on a different implementation, which of course is a great time to coincide to UX User experience / design work on each area, like the User Profile screen. There’s lots of options here, but hey, let’s discuss it!
How to help
If you’d like to help anywhere, please just reach out and I’ll get you into it. Every area needs review, some areas still need more work to finish, but any area could use additional help.
So who do you contact or where do you go to help?
Next Meeting Agenda – March 14th, 2016
Our next meeting is Monday 20:00 UTC 2015 and it promises to be eventful. We plan on discussing a number of things including:
- The Fields API specification
- Terminology of Fields
- Proposed by @johnbillion: “Why would I, as a developer of Meta Field Plugin 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 X, switch to using the Fields API?”