| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <?php
- /**
- * Plugin Name: QDR - Studiou WC Export/Import Product Categories
- * Plugin URI: https://www.quadarax.com/plugins/studiou-wc-product-cat-manage
- * Description: Allows batch import and export WooCommerce product categories
- * Version: 1.0
- * Requires at least: 6.7.2
- * Requires PHP: 8.2
- * Author: Dalibor Votruba
- * Author URI: https://www.quadarax.com
- * License: GPL v2 or later
- * License URI: https://www.gnu.org/licenses/gpl-2.0.html
- * Text Domain: studiou-wc-product-cat-manage
- * Domain Path: /languages
- */
- // If this file is called directly, abort.
- if (!defined('WPINC')) {
- die;
- }
- // Define plugin constants
- define('STUDIOU_WCPCM_VERSION', '1.0');
- define('STUDIOU_WCPCM_PLUGIN_DIR', plugin_dir_path(__FILE__));
- define('STUDIOU_WCPCM_PLUGIN_URL', plugin_dir_url(__FILE__));
- define('STUDIOU_WCPCM_PLUGIN_BASENAME', plugin_basename(__FILE__));
- /**
- * Main plugin class
- */
- class Studiou_WC_Product_Cat_Manage {
-
- /**
- * @var Studiou_WC_Product_Cat_Manage_Export
- */
- private $exporter;
-
- /**
- * @var Studiou_WC_Product_Cat_Manage_Import
- */
- private $importer;
-
- /**
- * @var Studiou_WC_Product_Cat_Manage_DB
- */
- private $db;
-
- /**
- * Initialize the plugin
- */
- public function __construct() {
- // Load dependencies
- $this->load_dependencies();
-
- // Check required plugins
- add_action('admin_init', array($this, 'check_required_plugins'));
-
- // Add admin menu items
- add_action('admin_menu', array($this, 'add_admin_menu'), 99);
-
- // Register admin assets
- add_action('admin_enqueue_scripts', array($this, 'register_admin_assets'));
-
- // Initialize components
- $this->init_components();
- }
-
- /**
- * Load required dependencies
- */
- private function load_dependencies() {
- require_once STUDIOU_WCPCM_PLUGIN_DIR . 'includes/class-studiou-wc-product-cat-manage-db.php';
- require_once STUDIOU_WCPCM_PLUGIN_DIR . 'includes/class-studiou-wc-product-cat-manage-export.php';
- require_once STUDIOU_WCPCM_PLUGIN_DIR . 'includes/class-studiou-wc-product-cat-manage-import.php';
- }
-
- /**
- * Initialize components
- */
- private function init_components() {
- $this->db = new Studiou_WC_Product_Cat_Manage_DB();
- $this->exporter = new Studiou_WC_Product_Cat_Manage_Export($this->db);
- $this->importer = new Studiou_WC_Product_Cat_Manage_Import($this->db);
- }
-
- /**
- * Check if required plugins are active
- */
- public function check_required_plugins() {
- if (!is_admin() || isset($_GET['activate-multi'])) {
- return;
- }
-
- // Check for WooCommerce
- if (!class_exists('WooCommerce') || !defined('WC_VERSION') || version_compare(WC_VERSION, '9.7', '<')) {
- add_action('admin_notices', array($this, 'woocommerce_missing_notice'));
- deactivate_plugins(STUDIOU_WCPCM_PLUGIN_BASENAME);
- if (isset($_GET['activate'])) {
- unset($_GET['activate']);
- }
- }
- }
-
- /**
- * WooCommerce missing notice
- */
- public function woocommerce_missing_notice() {
- ?>
- <div class="error">
- <p><?php echo sprintf(
- __('QDR - Studiou WC Export/Import Product Categories requires WooCommerce version 9.7 or higher. Please %sinstall or update WooCommerce%s.', 'studiou-wc-product-cat-manage'),
- '<a href="' . admin_url('plugin-install.php?s=woocommerce&tab=search&type=term') . '">',
- '</a>'
- ); ?></p>
- </div>
- <?php
- }
-
- /**
- * Add admin menu items
- */
- public function add_admin_menu() {
- // Make sure WooCommerce menu exists
- if (class_exists('WooCommerce')) {
- add_submenu_page(
- 'edit.php?post_type=product',
- __('Import Product Categories', 'studiou-wc-product-cat-manage'),
- __('Import Product Categories', 'studiou-wc-product-cat-manage'),
- 'manage_woocommerce',
- 'studiou-import-product-categories',
- array($this, 'render_import_page')
- );
-
- add_submenu_page(
- 'edit.php?post_type=product',
- __('Export Product Categories', 'studiou-wc-product-cat-manage'),
- __('Export Product Categories', 'studiou-wc-product-cat-manage'),
- 'manage_woocommerce',
- 'studiou-export-product-categories',
- array($this, 'render_export_page')
- );
- }
- }
-
- /**
- * Register admin assets
- */
- public function register_admin_assets($hook) {
- if ('product_page_studiou-import-product-categories' === $hook ||
- 'product_page_studiou-export-product-categories' === $hook) {
-
- wp_enqueue_style(
- 'studiou-wcpcm-admin',
- STUDIOU_WCPCM_PLUGIN_URL . 'assets/css/admin.css',
- array(),
- STUDIOU_WCPCM_VERSION
- );
-
- wp_enqueue_script(
- 'studiou-wcpcm-admin',
- STUDIOU_WCPCM_PLUGIN_URL . 'assets/js/admin.js',
- array('jquery'),
- STUDIOU_WCPCM_VERSION,
- true
- );
-
- wp_localize_script('studiou-wcpcm-admin', 'studiouWcpcm', array(
- 'ajaxUrl' => admin_url('admin-ajax.php'),
- 'nonce' => wp_create_nonce('studiou-wcpcm-nonce'),
- 'i18n' => array(
- 'importSuccess' => __('Import successful', 'studiou-wc-product-cat-manage'),
- 'importError' => __('Import error', 'studiou-wc-product-cat-manage'),
- 'exportSuccess' => __('Export successful', 'studiou-wc-product-cat-manage'),
- 'exportError' => __('Export error', 'studiou-wc-product-cat-manage'),
- )
- ));
- }
- }
-
- /**
- * Render import page
- */
- public function render_import_page() {
- include STUDIOU_WCPCM_PLUGIN_DIR . 'views/import.php';
- }
-
- /**
- * Render export page
- */
- public function render_export_page() {
- include STUDIOU_WCPCM_PLUGIN_DIR . 'views/export.php';
- }
- }
- /**
- * Begin execution of the plugin
- */
- function run_studiou_wc_product_cat_manage() {
- // Create instance
- new Studiou_WC_Product_Cat_Manage();
- }
- // Run the plugin
- run_studiou_wc_product_cat_manage();
|