Aggiungere un’area amministrativa per il nostro plugin WordPress
Praticamente ogni plugin WordPress ha bisogno un’area amministrativa, che sia composta da decine di pagine, oppure una sola per inserire, ad esempio, una chiave API.
In questo articolo vedremo, inizialmente, come aggiungere al menu del backend il link alle nostre pagine di amministrazione.
I file coinvolti saranno:
- include/class-nomeplugin.php
- admin/class-nomeplugin-admin.php
Aggiungere un item al menu del backend di WordPress
Innanzitutto creaiamo la configurazione in admin/class-nomeplugin-admin.php, io solitamente creo un nuovo metodo di nome add_menu()
public function add_menu()
{
add_menu_page(
"API Magazzino", //Titolo della pagina amministrativa
"API Magazzino", //Testo da mostrare nel menu
'manage_options', //Tipologia di pagina
$this->plugin_name .'-manager', //slug della pagina
'api_magazzino_admin_page', //Funzione di callback da richiare
'', //url dell'icona
80 //posizione
);
}
Riferitevi pure alla doc ufficiale di WP per tutti i dettagli per il metodo add_menu_page()
Funzione di callback per mostrare la pagina amministrativa
Come hai visto nel metodo add_menu() è necessario avere una funzione che “costruisca” la pagina una volta cliccato sul tasto del menu.
Per comodità la scrivo nel file admin/class-nomeplugin-admin.php, ma all’esterno della classe.
function api_magazzino_admin_page() {
include( WP_PLUGIN_DIR . '/api_magazzino/api_magazzino-database.php' );
include( WP_PLUGIN_DIR . '/api_magazzino/api_magazzino-call.php' );
include( plugin_dir_path( __FILE__ ) . 'partials/api_magazzino-admin-display.php' ); //unica linea veramente obbligatoria
} In questo caso. con le prime due linee vado ad includere delle classi di servizio che mi serviranno. mentre la terza è quella che include il vero e proprio file della pagina. Inutile dire che quest’ultima è quella che dovrà essere sempre inclusa, altrimenti non si vedrà una fava.
Attiviamo il tutto
Altro passaggio fondamentale è aggiungere l’azione nel file class-nomeplugin.php, che si trova nella root principale, inserendola nel metodo define_admin_hooks()
private function define_admin_hooks() {
$plugin_admin = new API_Magazzino_Admin( $this->get_plugin_name(), $this->get_version() );
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_menu' );
}
Manco a dirlo, questo metodo sarà quello che si occuperà di caricare tutti i file quando un utente si trova nell’area amministrativa.
Le prime due action vengono create di default da WPPB, mentre noi dovremo inserire manualmente quella cha avrà add_menu() come callback.
Fatto questo, pushando tutto e ricaricando la pagina, dovreste vedere apparire il menu. TADAAAA