Changeset 54240 for trunk/src/wp-includes/ms-functions.php
- Timestamp:
- 09/20/2022 02:49:25 AM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/ms-functions.php
r54080 r54240 2051 2051 2052 2052 /** 2053 * Maintains a canonical list of terms by syncing terms created for each blog with the global terms table.2054 *2055 * @since 3.0.02056 *2057 * @see term_id_filter2058 *2059 * @global wpdb $wpdb WordPress database abstraction object.2060 *2061 * @param int $term_id An ID for a term on the current blog.2062 * @param string $deprecated Not used.2063 * @return int An ID from the global terms table mapped from $term_id.2064 */2065 function global_terms( $term_id, $deprecated = '' ) {2066 global $wpdb;2067 static $global_terms_recurse = null;2068 2069 if ( ! global_terms_enabled() ) {2070 return $term_id;2071 }2072 2073 // Prevent a race condition.2074 $recurse_start = false;2075 if ( null === $global_terms_recurse ) {2076 $recurse_start = true;2077 $global_terms_recurse = 1;2078 } elseif ( 10 < $global_terms_recurse++ ) {2079 return $term_id;2080 }2081 2082 $term_id = (int) $term_id;2083 $c = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->terms WHERE term_id = %d", $term_id ) );2084 2085 $global_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM $wpdb->sitecategories WHERE category_nicename = %s", $c->slug ) );2086 if ( null == $global_id ) {2087 $used_global_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM $wpdb->sitecategories WHERE cat_ID = %d", $c->term_id ) );2088 if ( null == $used_global_id ) {2089 $wpdb->insert(2090 $wpdb->sitecategories,2091 array(2092 'cat_ID' => $term_id,2093 'cat_name' => $c->name,2094 'category_nicename' => $c->slug,2095 )2096 );2097 $global_id = $wpdb->insert_id;2098 if ( empty( $global_id ) ) {2099 return $term_id;2100 }2101 } else {2102 $max_global_id = $wpdb->get_var( "SELECT MAX(cat_ID) FROM $wpdb->sitecategories" );2103 $max_local_id = $wpdb->get_var( "SELECT MAX(term_id) FROM $wpdb->terms" );2104 $new_global_id = max( $max_global_id, $max_local_id ) + mt_rand( 100, 400 );2105 $wpdb->insert(2106 $wpdb->sitecategories,2107 array(2108 'cat_ID' => $new_global_id,2109 'cat_name' => $c->name,2110 'category_nicename' => $c->slug,2111 )2112 );2113 $global_id = $wpdb->insert_id;2114 }2115 } elseif ( $global_id != $term_id ) {2116 $local_id = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms WHERE term_id = %d", $global_id ) );2117 if ( null != $local_id ) {2118 global_terms( $local_id );2119 if ( 10 < $global_terms_recurse ) {2120 $global_id = $term_id;2121 }2122 }2123 }2124 2125 if ( $global_id != $term_id ) {2126 if ( get_option( 'default_category' ) == $term_id ) {2127 update_option( 'default_category', $global_id );2128 }2129 2130 $wpdb->update( $wpdb->terms, array( 'term_id' => $global_id ), array( 'term_id' => $term_id ) );2131 $wpdb->update( $wpdb->term_taxonomy, array( 'term_id' => $global_id ), array( 'term_id' => $term_id ) );2132 $wpdb->update( $wpdb->term_taxonomy, array( 'parent' => $global_id ), array( 'parent' => $term_id ) );2133 2134 clean_term_cache( $term_id );2135 }2136 if ( $recurse_start ) {2137 $global_terms_recurse = null;2138 }2139 2140 return $global_id;2141 }2142 2143 /**2144 2053 * Ensures that the current site's domain is listed in the allowed redirect host list. 2145 2054 *
Note: See TracChangeset
for help on using the changeset viewer.