mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-14 13:50:24 +00:00
Introduce metadata for taxonomy terms.
Adds a new table to the database schema (`wp_termmeta`), and a set of `*_term_meta()` API functions. `get_terms()` and `wp_get_object_terms()` now also support 'meta_query' parameters, with syntax identical to other uses of `WP_Meta_Query`. When fetching terms via `get_terms()` or `wp_get_object_terms()`, metadata for matched terms is preloaded into the cache by default. Disable this behavior by setting the new `$update_term_meta_cache` paramater to `false`. To maximize performance, within `WP_Query` loops, the termmeta cache is *not* primed by default. Instead, we use a lazy-loading technique: metadata for all terms belonging to posts in the loop is loaded into the cache the first time that `get_term_meta()` is called within the loop. Props boonebgorges, sirzooro. See #10142. git-svn-id: https://develop.svn.wordpress.org/trunk@34529 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -57,7 +57,16 @@ function wp_get_db_schema( $scope = 'all', $blog_id = null ) {
|
||||
$max_index_length = 191;
|
||||
|
||||
// Blog specific tables.
|
||||
$blog_tables = "CREATE TABLE $wpdb->terms (
|
||||
$blog_tables = "CREATE TABLE $wpdb->termmeta (
|
||||
meta_id bigint(20) unsigned NOT NULL auto_increment,
|
||||
term_id bigint(20) unsigned NOT NULL default '0',
|
||||
meta_key varchar(255) default NULL,
|
||||
meta_value longtext,
|
||||
PRIMARY KEY (meta_id),
|
||||
KEY term_id (term_id),
|
||||
KEY meta_key (meta_key($max_index_length))
|
||||
) $charset_collate;
|
||||
CREATE TABLE $wpdb->terms (
|
||||
term_id bigint(20) unsigned NOT NULL auto_increment,
|
||||
name varchar(200) NOT NULL default '',
|
||||
slug varchar(200) NOT NULL default '',
|
||||
|
||||
@@ -2628,6 +2628,14 @@ function pre_schema_upgrade() {
|
||||
$wpdb->query( "ALTER TABLE $wpdb->postmeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" );
|
||||
$wpdb->query( "ALTER TABLE $wpdb->posts DROP INDEX post_name, ADD INDEX post_name(post_name(191))" );
|
||||
}
|
||||
|
||||
// Upgrade versions prior to 4.4.
|
||||
if ( $wp_current_db_version < 34370 ) {
|
||||
// If compatible termmeta table is found, use it, but enforce a proper index.
|
||||
if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->termmeta}'" ) && $wpdb->get_results( "SHOW INDEX FROM {$wpdb->termmeta} WHERE Column_name = 'meta_key'" ) ) {
|
||||
$wpdb->query( "ALTER TABLE $wpdb->termmeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user