load_dependencies(); $this->init_hooks(); } private function load_dependencies() { require_once THALIM_NL_PLUGIN_DIR . 'includes/class-post-query.php'; require_once THALIM_NL_PLUGIN_DIR . 'includes/class-html-exporter.php'; require_once THALIM_NL_PLUGIN_DIR . 'includes/class-admin-page.php'; } private function init_hooks() { add_action('admin_menu', [$this, 'add_admin_menu']); add_action('admin_enqueue_scripts', [$this, 'enqueue_assets']); add_action('wp_ajax_thalim_nl_load_month', [new Thalim_NL_Admin_Page(), 'handle_ajax_load_month']); add_action('wp_ajax_thalim_nl_export_html', [new Thalim_NL_Admin_Page(), 'handle_ajax_export_html']); } public function add_admin_menu() { add_management_page( 'Newsletter', 'Newsletter', 'edit_others_posts', 'thalim-newsletter', [$this, 'render_admin_page'] ); } public function enqueue_assets($hook) { if ($hook !== 'tools_page_thalim-newsletter') { return; } wp_enqueue_style( 'thalim-newsletter-admin', THALIM_NL_PLUGIN_URL . 'assets/admin.css', [], THALIM_NL_VERSION ); wp_enqueue_script( 'thalim-newsletter-admin', THALIM_NL_PLUGIN_URL . 'assets/admin.js', ['jquery', 'jquery-ui-sortable'], THALIM_NL_VERSION, true ); wp_localize_script('thalim-newsletter-admin', 'thalimNL', [ 'ajaxUrl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('thalim_newsletter_ajax'), ]); } public function render_admin_page() { $page = new Thalim_NL_Admin_Page(); $page->render(); } } // Activation hook register_activation_hook(__FILE__, function () { add_option('thalim_nl_version', THALIM_NL_VERSION); }); // Initialize plugin add_action('plugins_loaded', function () { Thalim_Newsletter::get_instance(); });