Networks and Sites: Officially remove global terms.
Global terms was a feature from the WordPress MU days where multisite and single site installs used different code bases. In WordPress 3.0, WordPress MU was merged into one location and the UI [14854] and “on” switch [14880] for global terms were completely removed. Even before this merge, global terms was bug infested and unreliable. After [14854]/[14880], the feature was no longer maintained and became increasingly broken as taxonomies progressed without it (term splitting and term meta do not work at all). At this point, the feature has not worked in 12+ years and there’s no hope for saving it. This deprecates the remaining global terms related code and no-ops the functions. Global terms, you don’t have to go home, but you can’t stay here. Props scribu, wonderboymusic, SergeyBiryukov, nacin, pento, desrosj, johnjamesjacoby, johnbillion, dd32. Fixes #21734. Built from https://develop.svn.wordpress.org/trunk@54240 git-svn-id: http://core.svn.wordpress.org/trunk@53799 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -2049,97 +2049,6 @@ function wpmu_log_new_registrations( $blog_id, $user_id ) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Maintains a canonical list of terms by syncing terms created for each blog with the global terms table.
|
||||
*
|
||||
* @since 3.0.0
|
||||
*
|
||||
* @see term_id_filter
|
||||
*
|
||||
* @global wpdb $wpdb WordPress database abstraction object.
|
||||
*
|
||||
* @param int $term_id An ID for a term on the current blog.
|
||||
* @param string $deprecated Not used.
|
||||
* @return int An ID from the global terms table mapped from $term_id.
|
||||
*/
|
||||
function global_terms( $term_id, $deprecated = '' ) {
|
||||
global $wpdb;
|
||||
static $global_terms_recurse = null;
|
||||
|
||||
if ( ! global_terms_enabled() ) {
|
||||
return $term_id;
|
||||
}
|
||||
|
||||
// Prevent a race condition.
|
||||
$recurse_start = false;
|
||||
if ( null === $global_terms_recurse ) {
|
||||
$recurse_start = true;
|
||||
$global_terms_recurse = 1;
|
||||
} elseif ( 10 < $global_terms_recurse++ ) {
|
||||
return $term_id;
|
||||
}
|
||||
|
||||
$term_id = (int) $term_id;
|
||||
$c = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->terms WHERE term_id = %d", $term_id ) );
|
||||
|
||||
$global_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM $wpdb->sitecategories WHERE category_nicename = %s", $c->slug ) );
|
||||
if ( null == $global_id ) {
|
||||
$used_global_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM $wpdb->sitecategories WHERE cat_ID = %d", $c->term_id ) );
|
||||
if ( null == $used_global_id ) {
|
||||
$wpdb->insert(
|
||||
$wpdb->sitecategories,
|
||||
array(
|
||||
'cat_ID' => $term_id,
|
||||
'cat_name' => $c->name,
|
||||
'category_nicename' => $c->slug,
|
||||
)
|
||||
);
|
||||
$global_id = $wpdb->insert_id;
|
||||
if ( empty( $global_id ) ) {
|
||||
return $term_id;
|
||||
}
|
||||
} else {
|
||||
$max_global_id = $wpdb->get_var( "SELECT MAX(cat_ID) FROM $wpdb->sitecategories" );
|
||||
$max_local_id = $wpdb->get_var( "SELECT MAX(term_id) FROM $wpdb->terms" );
|
||||
$new_global_id = max( $max_global_id, $max_local_id ) + mt_rand( 100, 400 );
|
||||
$wpdb->insert(
|
||||
$wpdb->sitecategories,
|
||||
array(
|
||||
'cat_ID' => $new_global_id,
|
||||
'cat_name' => $c->name,
|
||||
'category_nicename' => $c->slug,
|
||||
)
|
||||
);
|
||||
$global_id = $wpdb->insert_id;
|
||||
}
|
||||
} elseif ( $global_id != $term_id ) {
|
||||
$local_id = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms WHERE term_id = %d", $global_id ) );
|
||||
if ( null != $local_id ) {
|
||||
global_terms( $local_id );
|
||||
if ( 10 < $global_terms_recurse ) {
|
||||
$global_id = $term_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( $global_id != $term_id ) {
|
||||
if ( get_option( 'default_category' ) == $term_id ) {
|
||||
update_option( 'default_category', $global_id );
|
||||
}
|
||||
|
||||
$wpdb->update( $wpdb->terms, array( 'term_id' => $global_id ), array( 'term_id' => $term_id ) );
|
||||
$wpdb->update( $wpdb->term_taxonomy, array( 'term_id' => $global_id ), array( 'term_id' => $term_id ) );
|
||||
$wpdb->update( $wpdb->term_taxonomy, array( 'parent' => $global_id ), array( 'parent' => $term_id ) );
|
||||
|
||||
clean_term_cache( $term_id );
|
||||
}
|
||||
if ( $recurse_start ) {
|
||||
$global_terms_recurse = null;
|
||||
}
|
||||
|
||||
return $global_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the current site's domain is listed in the allowed redirect host list.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user