studiou-wc-custom-reports.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * Plugin Name: QDR - Studiou WC Custom Reports
  4. * Plugin URI: https://www.quadarax.com/plugins/studiou-wc-custom-reports
  5. * Description: Allows view WooCommerce/Reports that shows custom overviews according to order, product, product categories, properties
  6. * Version: 1.1.0
  7. * Requires at least: 6.8.1
  8. * Requires PHP: 8.2
  9. * Author: Dalibor Votruba
  10. * Author URI: https://www.quadarax.com
  11. * License: GPL v2 or later
  12. * License URI: https://www.gnu.org/licenses/gpl-2.0.html
  13. * Text Domain: studiou-wc-custom-reports
  14. * Domain Path: /languages
  15. * WC requires at least: 9.0
  16. * WC tested up to: 9.9
  17. * Woo: 12345:342928dfsfhsf8429842374wdf4234sfd
  18. */
  19. // Prevent direct access
  20. if (!defined('ABSPATH')) {
  21. exit;
  22. }
  23. // Define plugin constants
  24. define('STUDIOU_WC_CUSTOM_REPORTS_PLUGIN_FILE', __FILE__);
  25. define('STUDIOU_WC_CUSTOM_REPORTS_PLUGIN_DIR', plugin_dir_path(__FILE__));
  26. define('STUDIOU_WC_CUSTOM_REPORTS_PLUGIN_URL', plugin_dir_url(__FILE__));
  27. define('STUDIOU_WC_CUSTOM_REPORTS_VERSION', '1.1.0');
  28. define('STUDIOU_WC_CUSTOM_REPORTS_TEXT_DOMAIN', 'studiou-wc-custom-reports');
  29. // Check if WooCommerce is active
  30. if (!in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
  31. add_action('admin_notices', function() {
  32. echo '<div class="notice notice-error"><p>' . __('Studiou WC Custom Reports requires WooCommerce to be installed and active.', STUDIOU_WC_CUSTOM_REPORTS_TEXT_DOMAIN) . '</p></div>';
  33. });
  34. return;
  35. }
  36. // Declare HPOS compatibility
  37. add_action('before_woocommerce_init', function() {
  38. if (class_exists('\Automattic\WooCommerce\Utilities\FeaturesUtil')) {
  39. \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('custom_order_tables', __FILE__, true);
  40. }
  41. });
  42. // Autoload classes
  43. spl_autoload_register(function ($class_name) {
  44. if (strpos($class_name, 'StudiouWC_') === 0) {
  45. $file_name = 'class-' . strtolower(str_replace('_', '-', substr($class_name, 10))) . '.php';
  46. $file_path = STUDIOU_WC_CUSTOM_REPORTS_PLUGIN_DIR . 'includes/' . $file_name;
  47. if (file_exists($file_path)) {
  48. require_once $file_path;
  49. }
  50. }
  51. });
  52. // Include main plugin class
  53. require_once STUDIOU_WC_CUSTOM_REPORTS_PLUGIN_DIR . 'includes/class-main.php';
  54. // Initialize the plugin
  55. function studiou_wc_custom_reports_init() {
  56. // Load translations
  57. load_plugin_textdomain(
  58. STUDIOU_WC_CUSTOM_REPORTS_TEXT_DOMAIN,
  59. false,
  60. dirname(plugin_basename(__FILE__)) . '/languages/'
  61. );
  62. // Initialize main plugin class
  63. new StudiouWC_Main();
  64. }
  65. add_action('plugins_loaded', 'studiou_wc_custom_reports_init');
  66. // Load textdomain for admin notices (before plugins_loaded)
  67. add_action('init', function() {
  68. load_plugin_textdomain(
  69. STUDIOU_WC_CUSTOM_REPORTS_TEXT_DOMAIN,
  70. false,
  71. dirname(plugin_basename(__FILE__)) . '/languages/'
  72. );
  73. });