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');
?>