153 lines
2.6 KiB
PHP
153 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace Blocksy\DbVersioning;
|
|
|
|
class V2096 {
|
|
public function migrate() {
|
|
$this->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();
|
|
}
|
|
}
|
|
}
|
|
|