/** * Test - create pages. */ public function test_create_pages() { // Clear options delete_option('woocommerce_shop_page_id'); delete_option('woocommerce_cart_page_id'); delete_option('woocommerce_checkout_page_id'); delete_option('woocommerce_myaccount_page_id'); WC_Install::create_pages(); $this->assertGreaterThan(0, get_option('woocommerce_shop_page_id')); $this->assertGreaterThan(0, get_option('woocommerce_cart_page_id')); $this->assertGreaterThan(0, get_option('woocommerce_checkout_page_id')); $this->assertGreaterThan(0, get_option('woocommerce_myaccount_page_id')); // Delete pages wp_delete_post(get_option('woocommerce_shop_page_id'), true); wp_delete_post(get_option('woocommerce_cart_page_id'), true); wp_delete_post(get_option('woocommerce_checkout_page_id'), true); wp_delete_post(get_option('woocommerce_myaccount_page_id'), true); // Clear options delete_option('woocommerce_shop_page_id'); delete_option('woocommerce_cart_page_id'); delete_option('woocommerce_checkout_page_id'); delete_option('woocommerce_myaccount_page_id'); WC_Install::create_pages(); $this->assertGreaterThan(0, get_option('woocommerce_shop_page_id')); $this->assertGreaterThan(0, get_option('woocommerce_cart_page_id')); $this->assertGreaterThan(0, get_option('woocommerce_checkout_page_id')); $this->assertGreaterThan(0, get_option('woocommerce_myaccount_page_id')); }
/** * Test get_checkout_url over HTTP. * * @since 2.5.0 */ public function test_get_checkout_url_ssl() { // Make sure pages exist WC_Install::create_pages(); // Get the original setting $o_setting = get_option('woocommerce_force_ssl_checkout'); // Force SSL checkout update_option('woocommerce_force_ssl_checkout', 'yes'); $this->assertEquals($this->get_checkout_url(), wc_get_checkout_url()); // Restore option update_option('woocommerce_force_ssl_checkout', $o_setting); }
/** * Save Page Settings */ public function wc_setup_pages_save() { check_admin_referer('wc-setup'); WC_Install::create_pages(); wp_redirect(esc_url_raw($this->get_next_step_link())); exit; }
/** * Handles output of tools */ public static function status_tools() { global $wpdb; $tools = self::get_tools(); if (!empty($_GET['action']) && !empty($_REQUEST['_wpnonce']) && wp_verify_nonce($_REQUEST['_wpnonce'], 'debug_action')) { switch ($_GET['action']) { case 'clear_transients': wc_delete_product_transients(); wc_delete_shop_order_transients(); WC_Cache_Helper::get_transient_version('shipping', true); echo '<div class="updated"><p>' . __('Product Transients Cleared', 'woocommerce') . '</p></div>'; break; case 'clear_expired_transients': /* * Deletes all expired transients. The multi-table delete syntax is used * to delete the transient record from table a, and the corresponding * transient_timeout record from table b. * * Based on code inside core's upgrade_network() function. */ $sql = "DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b\r\n\t\t\t\t\t\tWHERE a.option_name LIKE %s\r\n\t\t\t\t\t\tAND a.option_name NOT LIKE %s\r\n\t\t\t\t\t\tAND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )\r\n\t\t\t\t\t\tAND b.option_value < %d"; $rows = $wpdb->query($wpdb->prepare($sql, $wpdb->esc_like('_transient_') . '%', $wpdb->esc_like('_transient_timeout_') . '%', time())); $sql = "DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b\r\n\t\t\t\t\t\tWHERE a.option_name LIKE %s\r\n\t\t\t\t\t\tAND a.option_name NOT LIKE %s\r\n\t\t\t\t\t\tAND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) )\r\n\t\t\t\t\t\tAND b.option_value < %d"; $rows2 = $wpdb->query($wpdb->prepare($sql, $wpdb->esc_like('_site_transient_') . '%', $wpdb->esc_like('_site_transient_timeout_') . '%', time())); echo '<div class="updated"><p>' . sprintf(__('%d Transients Rows Cleared', 'woocommerce'), $rows + $rows2) . '</p></div>'; break; case 'reset_roles': // Remove then re-add caps and roles WC_Install::remove_roles(); WC_Install::create_roles(); echo '<div class="updated"><p>' . __('Roles successfully reset', 'woocommerce') . '</p></div>'; break; case 'recount_terms': $product_cats = get_terms('product_cat', array('hide_empty' => false, 'fields' => 'id=>parent')); _wc_term_recount($product_cats, get_taxonomy('product_cat'), true, false); $product_tags = get_terms('product_tag', array('hide_empty' => false, 'fields' => 'id=>parent')); _wc_term_recount($product_tags, get_taxonomy('product_tag'), true, false); echo '<div class="updated"><p>' . __('Terms successfully recounted', 'woocommerce') . '</p></div>'; break; case 'clear_sessions': $wpdb->query("\r\n\t\t\t\t\t\tDELETE FROM {$wpdb->options}\r\n\t\t\t\t\t\tWHERE option_name LIKE '_wc_session_%' OR option_name LIKE '_wc_session_expires_%'\r\n\t\t\t\t\t"); wp_cache_flush(); echo '<div class="updated"><p>' . __('Sessions successfully cleared', 'woocommerce') . '</p></div>'; break; case 'install_pages': WC_Install::create_pages(); echo '<div class="updated"><p>' . __('All missing WooCommerce pages was installed successfully.', 'woocommerce') . '</p></div>'; break; case 'delete_taxes': $wpdb->query("TRUNCATE " . $wpdb->prefix . "woocommerce_tax_rates"); $wpdb->query("TRUNCATE " . $wpdb->prefix . "woocommerce_tax_rate_locations"); echo '<div class="updated"><p>' . __('Tax rates successfully deleted', 'woocommerce') . '</p></div>'; break; case 'reset_tracking': delete_option('woocommerce_allow_tracking'); WC_Admin_Notices::add_notice('tracking'); echo '<div class="updated"><p>' . __('Usage tracking settings successfully reset.', 'woocommerce') . '</p></div>'; break; default: $action = esc_attr($_GET['action']); if (isset($tools[$action]['callback'])) { $callback = $tools[$action]['callback']; $return = call_user_func($callback); if ($return === false) { if (is_array($callback)) { echo '<div class="error"><p>' . sprintf(__('There was an error calling %s::%s', 'woocommerce'), get_class($callback[0]), $callback[1]) . '</p></div>'; } else { echo '<div class="error"><p>' . sprintf(__('There was an error calling %s', 'woocommerce'), $callback) . '</p></div>'; } } } break; } } // Manual translation update messages if (isset($_GET['translation_updated'])) { WC_Language_Pack_Upgrader::language_update_messages(); } // Display message if settings settings have been saved if (isset($_REQUEST['settings-updated'])) { echo '<div class="updated"><p>' . __('Your changes have been saved.', 'woocommerce') . '</p></div>'; } include_once 'views/html-admin-page-status-tools.php'; }
/** * Handles output of tools */ public static function status_tools() { global $wpdb; $tools = self::get_tools(); if (!empty($_GET['action']) && !empty($_REQUEST['_wpnonce']) && wp_verify_nonce($_REQUEST['_wpnonce'], 'debug_action')) { switch ($_GET['action']) { case 'clear_transients': wc_delete_product_transients(); wc_delete_shop_order_transients(); WC_Cache_Helper::get_transient_version('shipping', true); echo '<div class="updated"><p>' . __('Product Transients Cleared', 'woocommerce') . '</p></div>'; break; case 'clear_expired_transients': // http://w-shadow.com/blog/2012/04/17/delete-stale-transients/ $rows = $wpdb->query("\n\t\t\t\t\t\tDELETE\n\t\t\t\t\t\t\ta, b\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t{$wpdb->options} a, {$wpdb->options} b\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\ta.option_name LIKE '_transient_%' AND\n\t\t\t\t\t\t\ta.option_name NOT LIKE '_transient_timeout_%' AND\n\t\t\t\t\t\t\tb.option_name = CONCAT(\n\t\t\t\t\t\t\t\t'_transient_timeout_',\n\t\t\t\t\t\t\t\tSUBSTRING(\n\t\t\t\t\t\t\t\t\ta.option_name,\n\t\t\t\t\t\t\t\t\tCHAR_LENGTH('_transient_') + 1\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tAND b.option_value < UNIX_TIMESTAMP()\n\t\t\t\t\t"); $rows2 = $wpdb->query("\n\t\t\t\t\t\tDELETE\n\t\t\t\t\t\t\ta, b\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t{$wpdb->options} a, {$wpdb->options} b\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\ta.option_name LIKE '_site_transient_%' AND\n\t\t\t\t\t\t\ta.option_name NOT LIKE '_site_transient_timeout_%' AND\n\t\t\t\t\t\t\tb.option_name = CONCAT(\n\t\t\t\t\t\t\t\t'_site_transient_timeout_',\n\t\t\t\t\t\t\t\tSUBSTRING(\n\t\t\t\t\t\t\t\t\ta.option_name,\n\t\t\t\t\t\t\t\t\tCHAR_LENGTH('_site_transient_') + 1\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tAND b.option_value < UNIX_TIMESTAMP()\n\t\t\t\t\t"); echo '<div class="updated"><p>' . sprintf(__('%d Transients Rows Cleared', 'woocommerce'), $rows + $rows2) . '</p></div>'; break; case 'reset_roles': // Remove then re-add caps and roles WC_Install::remove_roles(); WC_Install::create_roles(); echo '<div class="updated"><p>' . __('Roles successfully reset', 'woocommerce') . '</p></div>'; break; case 'recount_terms': $product_cats = get_terms('product_cat', array('hide_empty' => false, 'fields' => 'id=>parent')); _wc_term_recount($product_cats, get_taxonomy('product_cat'), true, false); $product_tags = get_terms('product_tag', array('hide_empty' => false, 'fields' => 'id=>parent')); _wc_term_recount($product_tags, get_taxonomy('product_tag'), true, false); echo '<div class="updated"><p>' . __('Terms successfully recounted', 'woocommerce') . '</p></div>'; break; case 'clear_sessions': $wpdb->query("\n\t\t\t\t\t\tDELETE FROM {$wpdb->options}\n\t\t\t\t\t\tWHERE option_name LIKE '_wc_session_%' OR option_name LIKE '_wc_session_expires_%'\n\t\t\t\t\t"); wp_cache_flush(); echo '<div class="updated"><p>' . __('Sessions successfully cleared', 'woocommerce') . '</p></div>'; break; case 'install_pages': WC_Install::create_pages(); echo '<div class="updated"><p>' . __('All missing WooCommerce pages was installed successfully.', 'woocommerce') . '</p></div>'; break; case 'delete_taxes': $wpdb->query("TRUNCATE " . $wpdb->prefix . "woocommerce_tax_rates"); $wpdb->query("TRUNCATE " . $wpdb->prefix . "woocommerce_tax_rate_locations"); echo '<div class="updated"><p>' . __('Tax rates successfully deleted', 'woocommerce') . '</p></div>'; break; case 'reset_tracking': delete_option('woocommerce_allow_tracking'); WC_Admin_Notices::add_notice('tracking'); echo '<div class="updated"><p>' . __('Usage tracking settings successfully reset.', 'woocommerce') . '</p></div>'; break; default: $action = esc_attr($_GET['action']); if (isset($tools[$action]['callback'])) { $callback = $tools[$action]['callback']; $return = call_user_func($callback); if ($return === false) { if (is_array($callback)) { echo '<div class="error"><p>' . sprintf(__('There was an error calling %s::%s', 'woocommerce'), get_class($callback[0]), $callback[1]) . '</p></div>'; } else { echo '<div class="error"><p>' . sprintf(__('There was an error calling %s', 'woocommerce'), $callback) . '</p></div>'; } } } break; } } // Manual translation update messages if (isset($_GET['translation_updated'])) { switch ($_GET['translation_updated']) { case 2: echo '<div class="error"><p>' . __('Failed to install/update the translation:', 'woocommerce') . ' ' . __('Seems you don\'t have permission to do this!', 'woocommerce') . '</p></div>'; break; case 3: echo '<div class="error"><p>' . __('Failed to install/update the translation:', 'woocommerce') . ' ' . sprintf(__('An authentication error occurred while updating the translation. Please try again or configure your %sUpgrade Constants%s.', 'woocommerce'), '<a href="http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants">', '</a>') . '</p></div>'; break; case 4: echo '<div class="error"><p>' . __('Failed to install/update the translation:', 'woocommerce') . ' ' . __('Sorry but there is no translation available for your language =/', 'woocommerce') . '</p></div>'; break; default: // Force WordPress find for new updates and hide the WooCommerce translation update set_site_transient('update_plugins', null); echo '<div class="updated"><p>' . __('Translations installed/updated successfully!', 'woocommerce') . '</p></div>'; break; } } // Display message if settings settings have been saved if (isset($_REQUEST['settings-updated'])) { echo '<div class="updated"><p>' . __('Your changes have been saved.', 'woocommerce') . '</p></div>'; } include_once 'views/html-admin-page-status-tools.php'; }
/** * Actually executes a a tool. * * @param string $tool * @return array */ public function execute_tool($tool) { global $wpdb; $ran = true; switch ($tool) { case 'clear_transients': wc_delete_product_transients(); wc_delete_shop_order_transients(); WC_Cache_Helper::get_transient_version('shipping', true); $message = __('Product Transients Cleared', 'woocommerce'); break; case 'clear_expired_transients': /* * Deletes all expired transients. The multi-table delete syntax is used. * to delete the transient record from table a, and the corresponding. * transient_timeout record from table b. * * Based on code inside core's upgrade_network() function. */ $sql = "DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b\n\t\t\t\t\tWHERE a.option_name LIKE %s\n\t\t\t\t\tAND a.option_name NOT LIKE %s\n\t\t\t\t\tAND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )\n\t\t\t\t\tAND b.option_value < %d"; $rows = $wpdb->query($wpdb->prepare($sql, $wpdb->esc_like('_transient_') . '%', $wpdb->esc_like('_transient_timeout_') . '%', time())); $sql = "DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b\n\t\t\t\t\tWHERE a.option_name LIKE %s\n\t\t\t\t\tAND a.option_name NOT LIKE %s\n\t\t\t\t\tAND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) )\n\t\t\t\t\tAND b.option_value < %d"; $rows2 = $wpdb->query($wpdb->prepare($sql, $wpdb->esc_like('_site_transient_') . '%', $wpdb->esc_like('_site_transient_timeout_') . '%', time())); $message = sprintf(__('%d Transients Rows Cleared', 'woocommerce'), $rows + $rows2); break; case 'reset_roles': // Remove then re-add caps and roles WC_Install::remove_roles(); WC_Install::create_roles(); $message = __('Roles successfully reset', 'woocommerce'); break; case 'recount_terms': $product_cats = get_terms('product_cat', array('hide_empty' => false, 'fields' => 'id=>parent')); _wc_term_recount($product_cats, get_taxonomy('product_cat'), true, false); $product_tags = get_terms('product_tag', array('hide_empty' => false, 'fields' => 'id=>parent')); _wc_term_recount($product_tags, get_taxonomy('product_tag'), true, false); $message = __('Terms successfully recounted', 'woocommerce'); break; case 'clear_sessions': $wpdb->query("TRUNCATE {$wpdb->prefix}woocommerce_sessions"); wp_cache_flush(); $message = __('Sessions successfully cleared', 'woocommerce'); break; case 'install_pages': WC_Install::create_pages(); return __('All missing WooCommerce pages was installed successfully.', 'woocommerce'); break; case 'delete_taxes': $wpdb->query("TRUNCATE TABLE {$wpdb->prefix}woocommerce_tax_rates;"); $wpdb->query("TRUNCATE TABLE {$wpdb->prefix}woocommerce_tax_rate_locations;"); WC_Cache_Helper::incr_cache_prefix('taxes'); $message = __('Tax rates successfully deleted', 'woocommerce'); break; case 'reset_tracking': delete_option('woocommerce_allow_tracking'); WC_Admin_Notices::add_notice('tracking'); $message = __('Usage tracking settings successfully reset.', 'woocommerce'); break; default: $tools = $this->get_tools(); if (isset($tools[$tool]['callback'])) { $callback = $tools[$tool]['callback']; $return = call_user_func($callback); if ($return === false) { $callback_string = is_array($callback) ? get_class($callback[0]) . '::' . $callback[1] : $callback; $ran = false; $message = sprintf(__('There was an error calling %s', 'woocommerce'), $callback_string); } else { $message = __('Tool ran.', 'woocommerce'); } } else { $ran = false; $message = __('There was an error calling this tool. There is no callback present.', 'woocommerce'); } break; } return array('success' => $ran, 'message' => $message); }
/** * Handles output of tools */ public static function status_tools() { global $woocommerce, $wpdb; $tools = self::get_tools(); if (!empty($_GET['action']) && !empty($_REQUEST['_wpnonce']) && wp_verify_nonce($_REQUEST['_wpnonce'], 'debug_action')) { switch ($_GET['action']) { case 'clear_transients': wc_delete_product_transients(); echo '<div class="updated"><p>' . __('Product Transients Cleared', 'woocommerce') . '</p></div>'; break; case 'clear_expired_transients': // http://w-shadow.com/blog/2012/04/17/delete-stale-transients/ $rows = $wpdb->query("\n\t\t\t\t\t\tDELETE\n\t\t\t\t\t\t\ta, b\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t{$wpdb->options} a, {$wpdb->options} b\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\ta.option_name LIKE '_transient_%' AND\n\t\t\t\t\t\t\ta.option_name NOT LIKE '_transient_timeout_%' AND\n\t\t\t\t\t\t\tb.option_name = CONCAT(\n\t\t\t\t\t\t\t\t'_transient_timeout_',\n\t\t\t\t\t\t\t\tSUBSTRING(\n\t\t\t\t\t\t\t\t\ta.option_name,\n\t\t\t\t\t\t\t\t\tCHAR_LENGTH('_transient_') + 1\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tAND b.option_value < UNIX_TIMESTAMP()\n\t\t\t\t\t"); $rows2 = $wpdb->query("\n\t\t\t\t\t\tDELETE\n\t\t\t\t\t\t\ta, b\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t{$wpdb->options} a, {$wpdb->options} b\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\ta.option_name LIKE '_site_transient_%' AND\n\t\t\t\t\t\t\ta.option_name NOT LIKE '_site_transient_timeout_%' AND\n\t\t\t\t\t\t\tb.option_name = CONCAT(\n\t\t\t\t\t\t\t\t'_site_transient_timeout_',\n\t\t\t\t\t\t\t\tSUBSTRING(\n\t\t\t\t\t\t\t\t\ta.option_name,\n\t\t\t\t\t\t\t\t\tCHAR_LENGTH('_site_transient_') + 1\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tAND b.option_value < UNIX_TIMESTAMP()\n\t\t\t\t\t"); echo '<div class="updated"><p>' . sprintf(__('%d Transients Rows Cleared', 'woocommerce'), $rows + $rows2) . '</p></div>'; break; case 'reset_roles': // Remove then re-add caps and roles $installer = (include WC()->plugin_path() . '/includes/class-wc-install.php'); $installer->remove_roles(); $installer->create_roles(); echo '<div class="updated"><p>' . __('Roles successfully reset', 'woocommerce') . '</p></div>'; break; case 'recount_terms': $product_cats = get_terms('product_cat', array('hide_empty' => false, 'fields' => 'id=>parent')); _wc_term_recount($product_cats, get_taxonomy('product_cat'), true, false); $product_tags = get_terms('product_tag', array('hide_empty' => false, 'fields' => 'id=>parent')); _wc_term_recount($product_tags, get_taxonomy('product_tag'), true, false); echo '<div class="updated"><p>' . __('Terms successfully recounted', 'woocommerce') . '</p></div>'; break; case 'clear_sessions': $wpdb->query("\n\t\t\t\t\t\tDELETE FROM {$wpdb->options}\n\t\t\t\t\t\tWHERE option_name LIKE '_wc_session_%' OR option_name LIKE '_wc_session_expires_%'\n\t\t\t\t\t"); wp_cache_flush(); echo '<div class="updated"><p>' . __('Sessions successfully cleared', 'woocommerce') . '</p></div>'; break; case 'install_pages': WC_Install::create_pages(); echo '<div class="updated"><p>' . __('All missing WooCommerce pages was installed successfully.', 'woocommerce') . '</p></div>'; break; case 'delete_taxes': $wpdb->query("TRUNCATE " . $wpdb->prefix . "woocommerce_tax_rates"); $wpdb->query("TRUNCATE " . $wpdb->prefix . "woocommerce_tax_rate_locations"); echo '<div class="updated"><p>' . __('Tax rates successfully deleted', 'woocommerce') . '</p></div>'; break; case 'translation_upgrade': // Delete language pack version delete_option('woocommerce_language_pack_version'); // Force WordPress find for new updates set_site_transient('update_plugins', null); echo '<div class="updated"><p>' . sprintf(__('Forced the translations upgrade successfully, please check the <a href="%s">Updates page</a>', 'woocommerce'), add_query_arg(array('force-check' => '1'), admin_url('update-core.php'))) . '</p></div>'; break; default: $action = esc_attr($_GET['action']); if (isset($tools[$action]['callback'])) { $callback = $tools[$action]['callback']; $return = call_user_func($callback); if ($return === false) { if (is_array($callback)) { echo '<div class="error"><p>' . sprintf(__('There was an error calling %s::%s', 'woocommerce'), get_class($callback[0]), $callback[1]) . '</p></div>'; } else { echo '<div class="error"><p>' . sprintf(__('There was an error calling %s', 'woocommerce'), $callback) . '</p></div>'; } } } break; } } // Display message if settings settings have been saved if (isset($_REQUEST['settings-updated'])) { echo '<div class="updated"><p>' . __('Your changes have been saved.', 'woocommerce') . '</p></div>'; } include_once 'views/html-admin-page-status-tools.php'; }
/** * Delete all woocommerce data * */ public function delete_woocommerce_data() { global $wpdb; global $wc_product_attributes; $wpdb->show_errors(); $sql_queries = array(); $sql_queries[] = <<<SQL -- Delete WooCommerce term metas TRUNCATE {$wpdb->prefix}woocommerce_termmeta SQL; $sql_queries[] = <<<SQL -- Delete WooCommerce attribute taxonomies TRUNCATE {$wpdb->prefix}woocommerce_attribute_taxonomies SQL; $sql_queries[] = <<<SQL -- Delete WooCommerce order items TRUNCATE {$wpdb->prefix}woocommerce_order_items SQL; $sql_queries[] = <<<SQL -- Delete WooCommerce order item metas TRUNCATE {$wpdb->prefix}woocommerce_order_itemmeta SQL; // Execute SQL queries if (count($sql_queries) > 0) { foreach ($sql_queries as $sql) { $wpdb->query($sql); } } // Reset the WC pages flags $wc_pages = array('shop', 'cart', 'checkout', 'myaccount'); foreach ($wc_pages as $wc_page) { update_option('woocommerce_' . $wc_page . '_page_id', 0); } // Empty attribute taxonomies cache delete_transient('wc_attribute_taxonomies'); $wc_product_attributes = array(); $wpdb->hide_errors(); $this->display_admin_notice(__('WooCommerce data deleted', 'fg-magento-to-woocommerce')); // Recreate WooCommerce default data if (class_exists('WC_Install')) { WC_Install::create_pages(); $this->display_admin_notice(__('WooCommerce default data created', 'fg-magento-to-woocommerce')); } }