Plugin base: differenze tra le versioni
Aspetto
Nessun oggetto della modifica |
|||
| Riga 100: | Riga 100: | ||
* Carica un file CSS dal plugin | * Carica un file CSS dal plugin | ||
* Ritorna un blocco HTML nel contenuto del post | * Ritorna un blocco HTML nel contenuto del post | ||
== REST API – RestRoutes.php == | |||
'''Rotta''' | |||
<pre> | |||
GET /wp-json/myplugin/v1/hello | |||
</pre> | |||
'''Risposta''' | |||
<pre> | |||
{ "message": "Ciao dal plugin!" } | |||
</pre> | |||
'''Codice''' | |||
<pre> | |||
register_rest_route('myplugin/v1', '/hello', [ | |||
'methods' => 'GET', | |||
'callback' => [$this, 'handle_hello'], | |||
'permission_callback' => '__return_true' | |||
]); | |||
</pre> | |||
Versione delle 15:01, 13 ago 2025
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'
]);