migrate_brands_slug(); $this->migrate_product_brand_terms(); flush_rewrite_rules(); } private function migrate_brands_slug() { if (! class_exists('\Blocksy\Extensions\WoocommerceExtra\Storage')) { return; } $storage = new \Blocksy\Extensions\WoocommerceExtra\Storage(); $settings = $storage->get_settings(); if ( isset($settings['product-brands-slug']) && $settings['product-brands-slug'] !== 'brand' && get_option('woocommerce_product_brand_slug', '__empty__') === '__empty__' ) { update_option( 'woocommerce_product_brand_slug', $settings['product-brands-slug'] ); } } private function process_site() { $taxonomy = 'product_brands'; global $wpdb; $results = $wpdb->get_results( $wpdb->prepare( " SELECT t.term_id, t.name, t.slug FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s ", $taxonomy ) ); if ( ! $results || empty($results) ) { return; } foreach ($results as $term) { $native_brand = get_term_by( 'slug', $term->slug, 'product_brand' ); if ($native_brand) { wp_delete_term( $native_brand->term_id, 'product_brand' ); } $options = blocksy_get_taxonomy_options($term->term_id); if ( ! $options || empty($options) ) { continue; } update_term_meta( $term->term_id, 'thumbnail_id', sanitize_text_field(wp_unslash( isset($options['icon_image']['attachment_id']) ? $options['icon_image']['attachment_id'] : '' )) ); unset($options['icon_image']); update_term_meta( $term->term_id, 'blocksy_taxonomy_meta_options', $options ); } $wpdb->update( $wpdb->term_taxonomy, [ 'taxonomy' => 'product_brand' ], [ 'taxonomy' => 'product_brands' ] ); $wpdb->update( $wpdb->prefix . 'blocksy_product_taxonomies_lookup', [ 'taxonomy' => 'product_brand' ], [ 'taxonomy' => 'product_brands' ] ); } private function migrate_product_brand_terms() { if (! is_multisite()) { $this->process_site(); return; } if ( ! function_exists( 'get_sites' ) ) { require_once ABSPATH . 'wp-includes/class-wp-site-query.php'; require_once ABSPATH . 'wp-includes/ms-site.php'; } $blog_list = get_sites(); if ( ! $blog_list || empty($blog_list) ) { return; } foreach ($blog_list as $blog) { switch_to_blog($blog->blog_id); $this->process_site(); restore_current_blog(); } } }