check_dependencies(); // Upload-Verzeichnis erstellen $upload_dir = wp_upload_dir(); $plugin_upload_dir = $upload_dir['basedir'] . '/markdown-parser-wp'; if (!file_exists($plugin_upload_dir)) { wp_mkdir_p($plugin_upload_dir); } } /** * Plugin deaktivieren */ public function deactivate() { // Nichts zu tun } /** * Abhängigkeiten prüfen */ private function check_dependencies() { // Prüfen, ob Composer-Autoloader existiert if (!file_exists(plugin_dir_path(__FILE__) . 'vendor/autoload.php')) { add_action('admin_notices', function() { echo '

'; echo 'Markdown Parser WP benötigt Composer-Abhängigkeiten. Bitte führe composer install im Plugin-Verzeichnis aus.'; echo '

'; }); } } /** * Admin-Menü hinzufügen */ public function add_admin_menu() { add_menu_page( __('Markdown Parser', 'markdown-parser-wp'), __('Markdown Parser', 'markdown-parser-wp'), 'manage_options', 'markdown-parser-wp', array($this, 'render_admin_page'), 'dashicons-media-text', 100 ); } /** * Admin-Skripte und Styles laden */ public function enqueue_admin_scripts($hook) { if ('toplevel_page_markdown-parser-wp' !== $hook) { return; } // CSS laden wp_enqueue_style( 'markdown-parser-wp-admin', plugin_dir_url(__FILE__) . 'assets/css/admin.css', array(), self::VERSION ); // JavaScript laden wp_enqueue_script( 'markdown-parser-wp-admin', plugin_dir_url(__FILE__) . 'assets/js/admin.js', array('jquery'), self::VERSION, true ); // AJAX-URL für JavaScript bereitstellen wp_localize_script( 'markdown-parser-wp-admin', 'markdownParserWp', array( 'ajaxUrl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('markdown_parser_wp_nonce') ) ); } /** * Frontend-Skripte und Styles laden */ public function enqueue_frontend_scripts() { // CSS für Frontend-Shortcode-Ausgabe laden wp_enqueue_style( 'markdown-parser-wp-frontend', plugin_dir_url(__FILE__) . 'assets/css/frontend.css', array(), self::VERSION ); } /** * Admin-Seite rendern */ public function render_admin_page() { // Kategorien für Dropdown holen $categories = get_categories(array( 'hide_empty' => false, 'orderby' => 'name', 'order' => 'ASC' )); // Post-Typen für Dropdown holen $post_types = get_post_types(array( 'public' => true ), 'objects'); ?>