Plugin base
Aspetto
Info
Struttura modulare, basata su classi, con il supporto integrato per REST API e AJAX.
my-plugin/
│
├── my-plugin.php # File principale del plugin
├── uninstall.php # Disinstallazione pulita
│
├── includes/
│ ├── Core/
│ │ ├── Plugin.php # Classe principale che avvia il plugin
│ │ └── Loader.php # Classe che carica tutte le componenti
│ │
│ ├── Admin/
│ │ └── SettingsPage.php # Pannello admin nel backend
│ │
│ ├── Frontend/
│ │ └── ShortcodeHandler.php # Gestione shortcode e risorse frontend
│ │
│ ├── Api/
│ │ └── RestRoutes.php # Definizione di una rotta REST API
│ │
│ └── Ajax/
│ └── AjaxHandler.php # Gestione delle chiamate AJAX
│
├── assets/
│ ├── css/
│ ├── js/
│ └── images/
│
└── templates/
└── admin-settings.php # HTML della pagina di impostazioni admin
LOGICA DEL PLUGIN
my-plugin.php – File di bootstrap
Avvia il plugin caricando la classe Plugin.
require_once plugin_dir_path(__FILE__) . 'includes/Core/Plugin.php';
function run_my_plugin() {
$plugin = new MyPlugin\Core\Plugin();
$plugin->run();
}
run_my_plugin();
Plugin.php – Punto di ingresso OOP
Crea una nuova istanza del Loader, che inizializza tutte le funzionalità.
class Plugin {
public function run() {
$loader = new Loader();
$loader->init();
}
}
Loader.php – Inizializzazione dei moduli
class Loader {
public function init() {
if (is_admin()) {
(new \MyPlugin\Admin\SettingsPage())->register();
} else {
(new \MyPlugin\Frontend\ShortcodeHandler())->register();
}
// Extra
(new \MyPlugin\Api\RestRoutes())->register();
(new \MyPlugin\Ajax\AjaxHandler())->register();
}
}
Carica:
- la pagina admin se sei nel backend
- gli shortcode e gli script se sei nel frontend
- sempre la REST API e l’AJAX handler
SettingsPage.php – Menu nel pannello admin
Aggiunge un menu personalizzato in Impostazioni > Il Mio Plugin.
ShortcodeHandler.php – Gestione frontend
- Registra uno shortcode [my_shortcode]
- Carica un file CSS dal plugin
- Ritorna un blocco HTML nel contenuto del post
REST API – RestRoutes.php
Rotta
GET /wp-json/myplugin/v1/hello
Risposta
{ "message": "Ciao dal plugin!" }
Codice
register_rest_route('myplugin/v1', '/hello', [
'methods' => 'GET',
'callback' => [$this, 'handle_hello'],
'permission_callback' => '__return_true'
]);
AJAX – AjaxHandler.php
Azioni registrate:
add_action('wp_ajax_myplugin_action', [$this, 'handle']);
add_action('wp_ajax_nopriv_myplugin_action', [$this, 'handle']);
JS (esempio per usarlo):
jQuery.post(
myplugin_ajax.ajax_url,
{ action: 'myplugin_action' },
function(response) {
console.log(response.data.message);
}
);
Puoi localizzare lo script con wp_localize_script() per passare ajax_url.
uninstall.php
Contiene il codice di disinstallazione.