Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Aggiungere un nuovo menu al pannello di amministrazione

Come aggiungere un nuovo menu al pannello di amministrazione di WordPress
Come aggiungere un nuovo menu al pannello di amministrazione di WordPress
Link copiato negli appunti

Il framework di WordPress permette di creare menu di primo livello e sottomenu all'interno del pannello di amministrazione, offrendo quindi maggiore rilevanza alla configurazione del software aggiuntivo.

Nello specifico, la funzione add_menu_page() crea una nuova voce nel menu di amministrazione, questa va agganciata all'hook admin_menu, altrimenti WordPress restituirà un messaggio di errore. L'uso corretto della funzione, quindi, è il seguente:

add_action( 'admin_menu', 'seventyone_add_menus' );
function seventyone_add_menus(){
	add_menu_page(
		__('Seventyone settings', 'seventyone'),
		'Seventyone',
		'edit_theme_options',
		'seventyone_menu',
		'seventyone_menu_settings_page',
		'',
		61
	 );
}

add_menu_page() accetta sette argomenti, di cui quattro obbligatori e tre facoltativi:

Argomento Descrizione
$page_title (string) è il titolo della pagina come appare nel pannello di amministrazione (Seventyone settings).
$menu_title (string) è il titolo che appare nella pagina del menu (Seventyone).
$capability (string) è il livello di privilegio che l'utente deve avere per accedere al menu (edit_theme_options).
$menu_slug (string) è l'identificativo del menu (seventyone_menu).
$function (string) è la funzione che genera la pagina di configurazione.
$icon_url (string) è l'indirizzo di una eventuale icona da associare al menu.
$position (int) è la posizione del menu nel pannello di amministrazione. Il valore "61" colloca il menu subito al di sotto del menu "Appearence"; ma se due plugin utilizzano lo stesso valore solo uno dei due menu sarà visualizzato.

Potrebbe essere più prudente, quindi, non utilizzare quest'ultimo parametro (si legga il codex per maggiori informazioni).

Figura 1. Menu Seventyone subito al di sotto del menu Appearence
Il menu Seventyone al di sotto del menu Appearence

La funzione seventyone_menu_settings_page() genera il markup della pagina delle impostazioni:

function seventyone_menu_settings_page(){
	?>
	<div class="wrap">
		<h2><?php echo wp_get_theme(); ?> <?php _e('Theme options', 'seventyone' ) ?></h2>
		<?php settings_errors(); ?>
		<form method="post" action="options.php">
		<?php
			settings_fields( 'seventyone_meta' );
			do_settings_sections( 'seventyone_menu' );
			submit_button();
		?>
		</form>
	</div><!-- .wrap -->
	<?php
}

Prima di completare il codice della funzione seventyone_menu_settings_page(), già descritta in precedenza, bisognerà definire uno o più gruppi di opzioni con i rispettivi campi; si aggiungano quindi l'hook admin_init e la funzione di callback seventyone_register_settings():

function seventyone_register_settings(){
	add_settings_section( ... );
	add_settings_field( ... );
	register_setting( ... );
}
add_action( 'admin_init', 'seventyone_register_settings' );

Dal punto di vista strutturale, il codice è identico all'esempio precedente; cambiano, però, i valori di alcuni degli argomenti passati alle funzioni. Si aggiunga, quindi, un nuovo gruppo di opzioni:

add_settings_section(
	'seventyone_meta',
	__( 'Meta tags', 'seventyone' ),
	'seventyone_options_callback',
	'seventyone_menu'
);

Non cambia nulla se non il quarto argomento, che in questo caso corrisponde allo slug del nuovo menu Seventyone. La funzione di callback, invece, rimane invariata:

function seventyone_options_callback(){
	echo "<p>Insert the values of meta tags</p>";
}

Si aggiunge, poi, il campo di opzione:

add_settings_field(
	'meta_viewport',
	__( 'Viewport', 'seventyone' ),
	'seventyone_input_text',
	'general',
	'seventyone_meta',
	array(
		'id' => 'meta_viewport',
		'type' => 'text',
		'class' => 'regular-text',
		'default' => 'width=device-width, initial-scale=1.0',
		'description' => '<p class="description">Are you sure?</p>'
	)
);

Infine, si registrano le opzioni:

register_setting(
	'seventyone_meta',
	'meta_viewport'
);

Quindi si definisce la funzione di callback, che rimane invariata rispetto a quella illustrata in precedenza:

function seventyone_input_text( $args ){
	?>
	<input
		id="<?php echo $args['id']; ?>"
		type="<?php echo $args['type']; ?>"
		class="<?php echo $args['class']; ?>"
		value="<?php echo ( !empty( get_option( $args['id'] ) ) ) ? get_option( $args['id'] ) : ( $args['value'] ); ?>"
		name="<?php echo $args['id']; ?>" />
	<?php
}

Figura 2. La pagina delle opzioni collegata ad un menu di primo livello
La pagina delle opzioni collegata ad un menu di primo livello

La figura mostra il risultato di questo esempio. Nella prossima parte si metteranno a confronto le due API e si creerà un menu strutturato su più livelli.

Ti consigliamo anche