We’ve made lots of improvements to the Taxonomy 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. component for WordPress 4.4. Let’s round ’em up, pardner!🐴
Term 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.
The most significant improvement is the introduction of term meta #10142. Use the new term meta 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. –
get_term_meta() – to store arbitrary data about taxonomy terms, in the same way you would for posts, users, or comments. The term query functions
wp_get_object_terms() now support a ‘meta_query’ parameter, with syntax identical to the corresponding argument for
Term meta was built with performance in mind. When fetching terms using
wp_get_object_terms(), metadata for located terms is loaded into the cache with a single database query; disable this by passing
'update_term_meta_cache' => false in your query parameters. When querying for posts using
WP_Query, we have another trick up our sleeves: term meta for terms belonging to matched posts is lazy-loaded, so that all relevant term meta is only fetched the first time you call
get_term_meta() in the loop 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..
Developers who have previously implemented term meta in their own plugins or client sites should prepare their customizations for WordPress 4.4, to ensure that nothing’s broken in the transition.
WP_Term and unique term IDs
For the last few releases, we’ve been working hard on the taxonomy roadmap. A major achievement was the complete splitting of shared taxonomy terms in 4.3, which ensures that terms can be uniquely identified by their
term_id. In 4.4, we begin taking advantage of this uniqueness: the
$taxonomy parameter is now optional in
get_term_field(), functions that previously required both
Under the hood, we’ve introduced
WP_Term, a new class that properly models a term object #14162. Everywhere where terms can be retrieved – one at a time, as in
get_term_by(), or in bulk, as in
wp_get_object_terms()– you should expect
WP_Term objects to be returned, rather than
stdClass. For 4.4, this change doesn’t affect much, aside from making our term-caching internals somewhat more sane. But in the future, WP_Term will allow for more extensive caching throughout the Taxonomy component, as well as the potential for method chaining and other developer conveniences.
We’ve made lots of smaller improvements to Taxonomy as well. Some highlights:
- Registering a taxonomy with
'public => false' now prevents the taxonomy from being queried publicly. (Imagine that!) #21949
$taxonomy parameter for
get_term_by() is optional (and ignored) when fetching by
- Argument arrays are now filtered in
register_taxonomy(), and in the Categories post edit metabox A post metabox is a draggable box shown on the post editing screen. Its purpose is to allow the user to select or enter information in addition to the main post content. This information should be related to the post in some way.. #33026 #33369
- Accented characters in term names are no longer ignored when checking for duplicates, allowing for, eg, tags ‘foo’ and ‘fóó’ to coexist. #33864
- Term relationships caches are properly busted during
#4-4, #dev-notes, #taxonomy