How can we help?
Neues oMM-Plugin entwickeln
Übersicht
Diese Anleitung führt dich Schritt für Schritt durch die Erstellung eines neuen Plugins für die oMM-Sphäre.
Voraussetzungen
- WordPress 6.0 oder höher
- PHP 8.0 oder höher
- Grundkenntnisse in PHP und WordPress-Entwicklung
Schritt 1: Verzeichnisstruktur anlegen
mkdir -p wp-content/plugins/omm-mein-plugin/includes/{Core,Admin,API,Frontend,Editor}
mkdir -p wp-content/plugins/omm-mein-plugin/{assets/css,assets/js,languages,templates}
Schritt 2: Haupt-Plugin-Datei erstellen
Erstelle omm-mein-plugin.php:
<?php
/**
* Plugin Name: oMM Mein Plugin
* Plugin URI: https://schulsozialarbeiter.de/plugins/mein-plugin
* Description: Beschreibung deines Plugins
* Version: 1.0.0
* Author: Dein Name
* License: GPL v2 or later
* Text Domain: omm-mein-plugin
* Requires Plugins: omm-core
*/
namespace OpenMindMesh\MeinPlugin;
if (!defined('ABSPATH')) {
exit;
}
define('OMM_MEIN_PLUGIN_VERSION', '1.0.0');
define('OMM_MEIN_PLUGIN_PATH', plugin_dir_path(__FILE__));
define('OMM_MEIN_PLUGIN_URL', plugin_dir_url(__FILE__));
// PSR-4 Autoloader
spl_autoload_register(function ($class) {
$prefix = 'OpenMindMesh\\MeinPlugin\\';
$base_dir = OMM_MEIN_PLUGIN_PATH . 'includes/';
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
return;
}
$relative_class = substr($class, $len);
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
if (file_exists($file)) {
require $file;
}
});
function init() {
$plugin = new Core\Plugin();
$plugin->init();
}
add_action('plugins_loaded', __NAMESPACE__ . '\\init');
register_activation_hook(__FILE__, function() {
$installer = new Core\Installer();
$installer->activate();
});
Schritt 3: Plugin-Klasse erstellen
Erstelle includes/Core/Plugin.php:
<?php
namespace OpenMindMesh\MeinPlugin\Core;
use OpenMindMesh\Core\BasePlugin;
class Plugin extends BasePlugin {
private static ?Plugin $instance = null;
public static function get_instance(): Plugin {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
protected function get_slug(): string {
return 'omm-mein-plugin';
}
protected function get_capabilities(): array {
return ['mein-feature'];
}
protected function get_post_types(): array {
return [
'omm-mein-cpt' => [
'labels' => [
'name' => __('Meine Einträge', 'omm-mein-plugin'),
'singular_name' => __('Mein Eintrag', 'omm-mein-plugin'),
],
'public' => true,
'show_in_rest' => true,
'supports' => ['title', 'editor', 'thumbnail'],
],
];
}
public function init(): void {
parent::init();
$this->load_textdomain();
if (is_admin()) {
$this->init_admin();
}
$this->init_frontend();
}
}
Schritt 4: Installer-Klasse erstellen
Erstelle includes/Core/Installer.php:
<?php
namespace OpenMindMesh\MeinPlugin\Core;
class Installer {
public function activate(): void {
$plugin = Plugin::get_instance();
$plugin->register_post_types();
flush_rewrite_rules();
update_option('omm_mein_plugin_version', OMM_MEIN_PLUGIN_VERSION);
}
public function deactivate(): void {
flush_rewrite_rules();
}
}
Schritt 5: Admin-Settings erstellen
Erstelle includes/Admin/Settings.php mit WordPress Settings API.
Schritt 6: Shortcodes erstellen
Erstelle includes/Frontend/Shortcodes.php:
<?php
namespace OpenMindMesh\MeinPlugin\Frontend;
class Shortcodes {
public function register(): void {
add_shortcode('omm_mein_shortcode', [$this, 'render_shortcode']);
}
public function render_shortcode(array $atts): string {
$atts = shortcode_atts(['id' => 0], $atts);
ob_start();
// Template laden
return ob_get_clean();
}
}
Nächste Schritte
- Hooks und Filter nutzen
- REST-API erweitern
- Capability-System integrieren
- Gutenberg-Blöcke erstellen